Hi there Axel! Kudos for actually doing the “Start a thread introducing yourself” thing, I always seem to be too shy for those.
I’m not new to Snowdrift, but like you, I’ve come across a lot more free time during the pandemic (read: laid off) and I’ve always wanted to contribute. I now design websites (including for a living), but back when I was introduced to the Snowdrift team I was seriously pursuing Haskell.
Unfortunately, I never made it past “newbie”, so we’re on the same page. It’s such a cool language, and I was definitely excited about the possibilities of purely functional programming (in fact, I’ve never gone back to non-FP) - but it’s simply not great for beginners. The books, the naming choices, the error messages - it was all making everything less productive for a beginner, and seriously cramping the all-important “early wins”. Of course, I didn’t realize any of this at the time. My learning simply slowed to a halt one day.
Later I discovered a language that gets all of those things right, but with the same purely functional paradigm, and I absolutely took off. I started learning a language called Elm, and now I’ve taken on a coding project of my own that is bigger in scale and complexity than anything I’ve written in any other language - and it’s still my first real Elm project! It’s amazing how confident I feel when writing Elm - and other learners have agreed that it’s quite possibly the “nicest” language in the world right now. If you can’t tell, I’m quite a fan.
Like “Standard ML” (the SML @smichel17 was referring to), it drops the lazy-by-default and “bottom” features of Haskell (which are criticized for performance reasons), but is still immutable, pure, type-safe, etc. It takes those otherwise hard-to-appreciate features and gives us immediately appreciable practical benefits, like automatic semantic versioning and (my favorite) no runtime errors (literally, an Elm program is un-crashable!) - due to type safety. It has uber-simplified syntax compared to Haskell, and code formatting, debugging, package management, and other tooling that you’d normally need to figure out, is all built in.
Point is, while Elm is currently only designed for front-end web apps (too much JS for snowdrift), I invite anyone and everyone interested in functional programming to start with Elm if they want to truly enjoy their FP learning experience. Not just @axel.baudot but any future forum visitors as well. Armed with successful FP thinking, my confidence in Elm has renewed my interest in figuring out Haskell - at least as much as I need to in order to contribute to this Yesod codebase.
Speaking of which, while lately it’s been complained about (in-team) as too foreign and difficult to approach, I’m glad we are using a Haskell-powered backend. We’d have to pick one anyway, and while I understand the sentiment behind going with a more popular backend system that’s more
boring familiar, I’m glad we’re going with one that allows us (if not forces us) into using type safety to ensure correctness.
In other words, if we do this right (I am soon going to peek into the codebase myself), we can develop snowdrift pretty much only once. Rather than fixing bugs and having users run into problems, it will actually “just work” right off the bat, as guaranteed by the compiler. I’ve gotten used to such guarantees thanks to Elm, and boy, is it intoxicating.
Oops, I realize I’m hardly on topic anymore so let me not forget to say: Welcome Axel! - and yes, I’m working through the Yesod book right now, so feel free to join me so we can help move this thing along.