Specifically, I’m interested in BEAM, but I’m not sure if I should go for Elixir or Gleam. What seems cool about Gleam is that it has static typing.
I have no experience with functional programming at all btw
deleted by creator
You misspelled Haskell.
Raymond’s document does not, and I believe never has, mentioned Haskell.
I also disagree with him, given that it does recommend Java, but the quote is correct.
Why do you want to learn functional programming? If just for fun and learning, then you can’t go wrong with scheme.
Kinda funny, I’ve also been thinking about scheme as another option. Yes, (currently) it is just for fun and learning.
Another great avenue into this world is Racket. The tooling is fantastic and the documentation culture is first-class.
I had Racket as an intro class language but haven’t really gone beyond the beginner level (I also took another beginner class in Fortran, long story but I don’t hate Fortran, lol) but at that level I enjoyed it. How similar is it to Clojure and what’s my next steps to actually being competent-ish (and maybe employable) from here?
Clojure has it’s own set of idioms; it comes with some small surprises for old lisp hands. There are some things it’s really brought into the mainstream: performant persistent data structures in particular.
As well as excellent tooling and pedagogy, the principle attraction of Racket is the macro system. There’s a great book about this (this is true of just about all aspects of Racket). Racket’s focus is on building a tower of languages via macro extension. Metaprogramming is thematically FP-adjacent but neither sufficient or necessary; but if you’re looking for a fun learning experience it’s really worth a look.
In terms of employment opportunities - I know of several Clojure shops (on the JVM it has the bonus of being able to take advantage of the hole ecosystem), but I’m not aware of anywhere that’s using Racket outside of the academic sphere.
GNU Guile or Racket. from the language side every scheme is a scheme though. it kinda depends what you want to do with it
SICP is great for a very general in-depth intro
SICP is very hard for a beginner. I recommend little schemer.
Clojure always seems to be more popular than I expect it to be. Though I have no experience with it myself. It benefits from access to the JVM ecosystem as well I believe.
I love clj. in general it takes more of a pragmatic approach to functional programming than others. you get most of the purity for way less effort. same with specs over proper static types. it just ends up being a very enjoyable and productive language
I’d go with Erlang over elixir, but it sounds like you already have an interest in gleam.
FWIW: just pick one and get started. There are some major axes to consider: pure versus impure, lazy versus strict, static versus dynamic typing, but to kick off if you’ve done no FP before it’s probably better to just go for it.
There are some really intriguing “next steps”: SICP, the ML module system, the Haskell ecosystem, the OTP approach to state, but to begin with it’s just worth getting used to some basics.
Yeah, I’ll just go with Gleam :3
deleted by creator
I assume this suggestion will get me torched for reasons I don’t understand, but why not a multi-paradigm language like JavaScript/Typescript, or C#?
I feel like this is the way. It ensures you get exposed to multiple paradigms and can help you easily switch to a language that’s more invested in one paradigm.
Elixir is quite amazing to write and read, the major libraries (Pheonix, Ecto, etc.) have excellent documentation, the tools are generally excellent and it is built on to BEAM which is amazing. But it is a dynamically typed language with all the pain that can incur. Of course, there are tools (such as Dialyzer) to give some amount of static type checking but they were not very good when I tried them some years ago. Using things that need mutation can also be a pain.
Programming Elixir 1.6 Functional |> Concurrent |> Pragmatic |> Funwas the book I used to learn functional programming and Elixir and it served me well.There are other good languages you can look into such as Ocaml (that has good free resources for new programmers) and Racket with the amazing free course you can find on OSSU.
I think it doesn’t matter in what language you start, as long as it is the paradigm you are learning. You can still pick and choose the language later. Maybe start with a pure functional language, just to learn its concepts. Haskell comes to mind, but it kind of is not the best usable language in every day programming; its more academical nature in my opinion. I personally find Closure also interesting, but I’m not the biggest Java fan at all. At least the language is for practical usage.
My ₹1. It may depend on what you plan to write in it (for fun). The BEAM sounds great for long-running processes, but not as much for point tools; Erlang and co supposedly run slower than Python, which isn’t fast either.
My other ₹ ;-) if you stick to the BEAM: OCaml sort of runs on it, as there is the Caramel project to replicate it (https://caramel.run/). One of the Erlang creators also ported Prolog to the BEAM (erlog), as well as Lua (erlua) and Lisp (LFE). Elixir is probably great, as it is inspired by Ruby (I found Ruby very pleasant, other languages have so much semantic noise).
Freebie! The BEAM inspired an inspirational design for parallel programming, the Pony language. I am somewhat sad development slowed down, it is a Rust killer.
₹ = Indian Rupee, in case anyone is wondering.
I did a functional programming course in university snd we learned Haskell and really loved it. By far my favourite subject in all 4 years of uni. Have never used it since tho but it was fun XD
gleam feels cozy.
F# is a decent introduction into functional programming. You can use .NET libraries and occasionally fall back to imperative code when needed.
If you’re interested in BEAM anyways, Gleam is just a lovely language to work with. It makes many functional principles easy to work with rather than mathematical. Although I don’t have any experience in Elixir, so I can’t judge how it compares in detail.
I love functional programming and hate object oriented. It’s just how my brain thinks, I can and regularly do OOP, but I have to force myself to do it. Why not python? You can do BEAM in python, it’s pretty easy to learn, and it’s incredibly versatile, and you can program functionally in it too.
Python has OOP but basically no ergonomic support for FP? It doesn’t even support tail recursion or currying, lambdas are very limited and there is no nice way to compose functions. Most of the python ecosystem heavily relies on OOP and in many cases global state. Not hating on python but even compared to other mixed paradigm languages like javascript it’s on the less-functional side of things.
Erlang https://learnyousomeerlang.com/ If you know golang and recurrence it should be easy, google basically stole channels from Erlang and syntax from Swift. Like everything else, they just stealing stuff and claiming they’re great. Fucking rich script kiddies.
Using concepts from other programming languages isn’t stealing
Let me rephrase it. It wasn’t original idea. Scandinavian made it first Americans just copied and sold it.
Erlang wasn’t the first implementation of CSP.





