Skip Navigation

i want to learn/use functional programming language

should i go with Clojure or common Lisp? i'm looking for an intuitive language and the tooling is great. my background: Ruby programmer and i use neovim. my goal: AI development. do people really use Lisp family for AI dev tho?

13 comments
  • If you want to learn FP for the sake of learning FP:

    Learn you a Haskell is a great start.

    Now, something to know about my opinion:

    • I think Haskell is great.
    • I think Haskell's tooling is pretty doodoo.

    So, you could use Haskell Playground or something like repl.it to run Haskell in your browser. This should save you on a confusing setup.

  • Ruby is already a functional programming language -- you can pass functions to functions, return functions from functions, and make closures in Ruby already. You're probably already using some functional programming concepts if you've done anything non-trivial in Ruby even if it didn't register for you as "functional programming".

    If you want to do ML (current "AI"), you'd probably do best to learn some Python (PyTorch, TensorFlow, etc.) and maybe CUDA for lower-level control. (It's basically C++ with extra features for running code on NVIDIA GPUs.) There might be Ruby wrappers for the underlying ML libraries, but I expect most resources you'll find (e.g. StackOverflow answers) will assume you're working with Python...

    If you're still interested in learning one of the languages you listed, you'll get some educational benefits from exploring them but I don't think you're likely to get much practical benefit out of it for AI over Ruby. I learned a lot from exploring Clojure personally -- I particularly liked the idea of identity as a series of values over time -- but I don't work in the JVM ecosystem, and so I haven't actually done anything with the language in 10+ years... The concepts I learned from playing with it were more useful than the language itself to me.

  • You might want to check out Nim-lang (3 options for deep-learning, Arraymancer being the most popular and active) (also considering how much AI stuff is on Python, you can call Nim code from Python via Nimpy)

    I mostly just find it the most intuitive (for the performance/capability it offers) though, as in I haven't done much (certainly not AI stuff) and can't tell you if it's the best for functional programming (other than that Nim takes inspiration from Lisp). Though I do see that some Nim users have said it's not purely functional (it may be on you to make sure your code is) and that other options might be better if it's a priority.

13 comments