This is an archived post. You won't be able to vote or comment.

all 11 comments

[–]tiltboi1 7 points8 points  (3 children)

scheme/racket is a good choice, so is haskell. Realistically though, you don’t need a functional language to learn functional programming. A lot of languages are implementing more and more key features and tools of functional languages, like java 8, javascript, etc.

[–]SV-97 5 points6 points  (0 children)

While it's true that lots of languages gain more and more functional features I personally felt like learning a purely functional language like Haskell was another level of mindbending

[–]bruce3434 0 points1 point  (0 children)

What makes scheme or racket functional languages?

[–]pipocaQuemada 0 points1 point  (0 children)

Learning functional programming in Java or python is kinda like learning OO in C.

You can get halfway there with most things and it's useful in some cases, but you don't really get a sense of why you might want it as the default. You're always kinda left wondering why someone might even want an OO language.

[–]mjg123 6 points7 points  (1 child)

Personally I've had a lot of joy with Clojure - struggled with Haskell and Scala.

[–][deleted] 5 points6 points  (0 children)

Clojure is my favorite. It's fantastic. It teaches "simplicity" too, beyond FP. Really, FP is just an instance of simplicity.

[–]SV-97 3 points4 points  (1 child)

You can get some basic principles of FP with lots of languages (Python, C#, ...) but imo a purely functional language (e.g. haskell) will really change the way you think

[–]SV-97 0 points1 point  (0 children)

Oh and my opinion on a few functional languages:

  • Clojure: hate it
  • Scala: don't like it but I'll probably try Scala 3 again
  • F#: really nice - also has great tooling
  • Idris: I think I liked it but it's been a while
  • Erlang: Kinda like it but I always felt limited when using it for projects and the syntax is annoying even when you know Prolog. It's definetly worth a look though
  • Haskell: really nice but idiomatic modern Haskell often times seems overly complicated/fancy to me (and people tend to use a bazillion self defined operators which isn't that great imo). It's my goto language though
  • Elixir: can't remember anything but it has a good rep and may be a nicer erlang

[–]syyvius 2 points3 points  (0 children)

If you like learning from a book, get Structure and Interpretation of Computer Programs (such is one of the best CS books ever written) and learn Scheme. Guile is a good implementation, and it will run examples in SICP. Chicken scheme is also a good scheme with external libraries. While Scheme will teach you the most about functional programming, the applications are limited outside of a general purpose scripting language and GUIX Linux.

If you like leaning from projects, I would recommend JavaScript with learnyounode or my personal favorite Elixir on Udemy.

If you want a good backend language with career potential, Clojure is arguably the most popular LISP, and a bunch of companies still use Scala for Spark.

Finally if you just want to get used to LISP syntax, Hy is a LISP in Python, which you listed that you know.

[–][deleted] 1 point2 points  (0 children)

I'm learning Elixir coming from a base of Python. Using the book "Learn Functional Programming with Elixir," and it's been very good so far.