I'm just a hobbyist that enjoys programming, and I eventually wanted to expand beyond python. I looked at Haskell and read Learn You a Haskell and did some Exercism exercises but never got anywhere close to being able to use it for real projects. Have been trying to learn about Lisp lately and feel like I've come to a similar dead end.
On the other hand, both Go and Rust have felt fulfilling and practical, with static typing and solid tooling, cross compilations, static binaries, and dependency management that is just a huge breath of fresh air coming from python.
The ML / data science scene is nowhere near as developed as in Python, and I still lean on jupyter/polars/PyTorch here, but I think the candle project[0] seems very interesting. Compiling whisper down to a single CUDA-leveraging binary for fast local transcription is pretty cool!
I chose them mostly based on pedigree, reputation, and vibe. For OCaml in particular, I have been listening to Jane Street's Signals & Threads podcast, and I figure that if these incredibly smart and accomplished people really like OCaml, it must be pretty cool and worth checking out.
Elixir was also something that seemed interesting. I like that it has a focus/specialty (real-time, highly concurrent systems), and its specialty is relevant to several of my interests.
> I looked at Haskell and read Learn You a Haskell and did some Exercism exercises but never got anywhere close to being able to use it for real projects. Have been trying to learn about Lisp lately and feel like I've come to a similar dead end.
Yeah, I did some Learn You a Haskell a while back and similarly felt it was too incoherent and disjointed. I intend to buy a physical book or two this time around.
> On the other hand, both Go and Rust have felt fulfilling and practical, with static typing and solid tooling, cross compilations, static binaries, and dependency management that is just a huge breath of fresh air coming from python.
If I was going to start a startup, or was tasked with building a new service at an existing company, Go would be my leading candidate. However, I view that choice as simply very practical; it's a reliable language that is in widespread production use, performs well, etc. But this is more about interest/fun. I haven't written much Go, but insofar as I have, I found it very tedious and somewhat awkward. And it's not a functional programming language, as far as I am aware.
Yeah, candle is pretty cool, and is one reason why Rust was also a candidate for me. Dropped it out of consideration because I basically am not motivated by any of the things that, to my understanding, motivate Rust, such as low memory footprint.
I have to admit that I've really enjoyed rust, and I think it actually pairs well with python. But I'm sure you've heard plenty of rust evangelism, and as it wasn't one of your two candidates for this thread, I won't go any further.
I haven't had that much Rust evangelism, lol, though I've seen it on HN from time to time. I'd be curious how it feels to build the standard parts of a web app in Rust versus Go (API/routing, basic CRUD stuff, DB connections, etc).
FYI I'll mention it here. Haskell is the single worst introduction to functional programming anyone can try. It's absolutely terrible resources for learning it (Learn You a Haskell is a disaster of a "book"), and the language's documentation and on ramp are really poor.
If you want a statically typed functional language learn F#. And can easily leverage the .net ecosystem for easy productiity. Or if you want something that introduces the concepts that you can learn in a weekend learn Elm. It's front end only, it's very opinionated, but it's tiny and a great langauge to learn to think in FP.
If you want a non statically typed functional language learn Clojure. Not ideal on ramp, if has the java ecosystem, and great concepts. If you really don't want to do that learn a Scheme or Common Lisp although ecosystem isn't as large.
Once you've learned one (or two) of those, then start exploring things like Haskell. But before then it's a terrible waste of time, and almost guaranteed you'll be turned off from learning it before you feel productive in it or that you got your money's worth from your effort.
Reading about programming makes you good at reading about programming. If you want a "guided project" to learn from instead, I can recommend
https://lhbg-book.link/
> wanted to expand beyond python. [...] Have been trying to learn about Lisp lately and feel like I've come to a similar dead end.
If you're already comfortable with Python, check out Hissp's tutorials (in the docs). It's a Lisp hosted on Python, so you can focus on the Lisp concepts without getting so bogged down by learning a new standard library at the same time.
I'm just a hobbyist that enjoys programming, and I eventually wanted to expand beyond python. I looked at Haskell and read Learn You a Haskell and did some Exercism exercises but never got anywhere close to being able to use it for real projects. Have been trying to learn about Lisp lately and feel like I've come to a similar dead end.
On the other hand, both Go and Rust have felt fulfilling and practical, with static typing and solid tooling, cross compilations, static binaries, and dependency management that is just a huge breath of fresh air coming from python.
The ML / data science scene is nowhere near as developed as in Python, and I still lean on jupyter/polars/PyTorch here, but I think the candle project[0] seems very interesting. Compiling whisper down to a single CUDA-leveraging binary for fast local transcription is pretty cool!
[0]: https://github.com/huggingface/candle