DEV Community

Cover image for Introducing NeoHaskell: A beacon of joy in a greyed tech world

Introducing NeoHaskell: A beacon of joy in a greyed tech world

Nick Tchayka on September 24, 2023

Today, I'm proud to announce a (free and open-source) project that I've been working on for many years: NeoHaskell, a dialect of Haskell that pri...
Collapse
 
hinigul profile image
Johan S. Cortes

Great post my friend, I see myself as one wannabe Haskell developer who always give up because all that complexity that you mention. Fortunately, I found refuge in Ruby, but the intention to go deeper with Haskell is always behind me 🤣 like a shadow.

Collapse
 
nickseagull profile image
Nick Tchayka

Glad that you've liked it, I hope one day NeoHaskell will be so smooth that you can replace Ruby with it :)

Collapse
 
marick profile image
Brian Marick

I support your goals. I got halfway through a book titled An Outsider's Guide to Statically-Typed Functional Programming, which intended to build up a dev's knowledge, starting with Elm and moving to PureScript, and I gave it up for some of the same reasons you started this project.

Alas, I've concluded that five years is an underestimate. The languages have progressed, but not fast enough. That is, their advantages over mixed or dynamic languages are small enough that accepting their extra hassle and risk isn't a bet I'd care to make.

To be clear: these languages are solid, as languages. However, they require more dedication and work than more established languages, and I don't think they yet pay that back. It's not that they don't have benefits – it's that the cost is too high.

The Elm portion of that book (all that I completed) might be of use to you, as I think it provides what I thought was a beginner-friendly path that's aligned with your goals. I could be tempted to rewrite the book in NeoHaskell...

P.S. I couldn't join the discord: "Invite Invalid
This invite may be expired, or you might not have permission to join."

Collapse
 
nickseagull profile image
Nick Tchayka

Send me a DM on Discord to NickSeagull. Some people are having trouble with the link, and I'm not sure why.

Collapse
 
marick profile image
Brian Marick

Sorry I lost this. I've sent you a friend request.

Collapse
 
joshuakb2 profile image
Joshua Baker

This sounds very valuable. I love writing Haskell code, but I wasted many hours trying to get the tooling to work for me. In its current state, there's a 0% I can use Haskell at work, because even though I'm competent in the language, it would be irresponsible for me to commit to a language (and particularly libraries) where I have to worry about getting stuck. Not to mention that my coworkers would not be able to contribute and would not be excited to learn entirely new paradigms and syntax (unlike me).

But if the tooling story were clearer and more trustworthy, I would definitely use Haskell more often.

Collapse
 
webbureaucrat profile image
webbureaucrat

I don't believe that a product should be guided by democracy, and neither it should implement all suggestions by every user.

You may take some flack for this, but this is a very good philosophy IMO. Good for you.

Collapse
 
artydev profile image
artydev

Good luck :-)

Collapse
 
antonrich profile image
Anton

What about Elm? Elm sounds like a stripped version of Haskell. Simple and reliable, I would also add that it's not difficult to learn. The only tasks that's left is to make it a backend language.

Collapse
 
nickseagull profile image
Nick Tchayka

Elm is great! In fact, I've given a stab trying to make it a backend language at some point. Still, it is not designed with backend in mind, so there are things that are still rough in terms of DX, like, defining services (as in code-organization), or even, there are tasks that are inherently imperative, like scripts, and processors.

Yes, Elm could be modified to support that, but in reality, Haskell already supports all of Elm (except anonymous records, but that's solvable), as well as the other good stuff for backend dev.

On top of that GHC is a great compiler that is very extendable, as well as a great performant runtime.

My theory is that by transmuting Haskell into NeoHaskell will have a much better outcome than trying to make Elm something that it wasn't designed for :)

Collapse
 
antonrich profile image
Anton

You've made a good point of Elm's design not supporting backend from the beginning. Thanks.

Collapse
 
cherryramatis profile image
Cherry Ramatis

what an awesome work, I'm thrilled to see this evolving, I have a lot of curiosity with haskell but couldn't get my head around it

Collapse
 
efpage profile image
Eckehard • Edited

Continual satisfaction is really desirable :-) . My only concern is that the return of reverse Polish notation won't bring it to me....

Collapse
 
bahner profile image
Lars Bahner • Edited

I sincerely hope your languages can be for Haskell what Elixir became for Erlang. Users before anything!

Share and enjoy!

Collapse
 
codewander profile image
Kanishka

Where do you place this within roc and gleam and others in related spaces?

Collapse
 
nickseagull profile image
Nick Tchayka

Roc and Gleam are projects that I've tried and I'm excited about :)

The thing is that they are new ecosystems on their own, and I wanted to build something within Haskell, as I believe it has a lot of potential, and it is already being used in production :)

Collapse
 
antonrich profile image
Anton

You mean NeoHaskell being a simpler (yet as powerful) version of Haskell could use all Haskell's libraries?

Thread Thread
 
nickseagull profile image
Nick Tchayka

Correct! Think of NeoHaskell for Haskell as Elixir for Erlang :)

It will limit the things that you can do, but also it will allow you to do other stuff, while retaining the possibility of interacting with all Haskell's libraries :D

Thread Thread
 
antonrich profile image
Anton

The reason I was asking this precise question about Haskell libraries, wouldn't the person deling with Haskell librarie know Haskell itself? Meaning the person will eventually grow out of NeoHaskell because of using Haskell's ecosystem. Or it could be used irregardless whether you know Haskell or not?

Thread Thread
 
nickseagull profile image
Nick Tchayka

So, the idea is to be a parallel ecosystem that leverages the Haskell one. Yes, at the beginning it will be harsh (same as when Python libraries were beginning and had to interface with C. But with time, the ecosystem will be NeoHaskell

Collapse
 
antonrich profile image
Anton

NeoHaskell in other words: The discipline not to get advanced with Haskell. At the end of the day, Haskell is, first and foremost, a research language and many people are tempted to apply its cutting edge features, which understandably make things overly complex.

Collapse
 
nickseagull profile image
Nick Tchayka

I don't see it as that. The issue is not being advanced or not (in many languages they are doing advanced things with reflection, meta-programming, and other stuff) the thing with Haskell is that it is rooted in math concepts that are tangent to the world of software development. In C# folks are using LINQ without knowing what a Monad is, or Express.js middlewares without knowing what a Monoid is.

NeoHaskell is focusing on software development and pragmatism, removing the nice to haves

Collapse
 
simlei profile image
Info Comment hidden by post author - thread only accessible via permalink
Simon Leischnig

This post has rainbow puke all over it...
I had to laugh heartily at "oh, yes, I didn't implement anything yet" and "I'm the one who calls the shots" one paragraph before that. Good luck but I won't be holding my breath. Better advocate for Scala 3 I guess.

Some comments have been hidden by the post's author - find out more