Clojure is great but not for AI. Currently the best option for AI is python.
Learn Programming
Posting Etiquette
-
Ask the main part of your question in the title. This should be concise but informative.
-
Provide everything up front. Don't make people fish for more details in the comments. Provide background information and examples.
-
Be present for follow up questions. Don't ask for help and run away. Stick around to answer questions and provide more details.
-
Ask about the problem you're trying to solve. Don't focus too much on debugging your exact solution, as you may be going down the wrong path. Include as much information as you can about what you ultimately are trying to achieve. See more on this here: https://xyproblem.info/
Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient
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.
do people really use Lisp family for AI dev tho?
Not since the 70s. They almost all use Python.
FP has absolutely nothing to do with modern AI.
Functional programming doesn't have much to do with what people call "AI" nowadays, but it is still a valuable skill to write compositional code.
Since you mention tooling, I am going to give a unconventional recommendation: rust, but try not to use mut keyword. Rust is a decently matrue language, widely used in the industry, and it actually support decently advanced functional features (e.g. https://varkor.github.io/blog/2019/03/28/idiomatic-monads-in-rust.html ).
Another alternative is scala, which I don't know whether it is still very popular. But it certainly is one of the approachable "cool" language 7 years ago.
Second vote for Scala. It's not one of the top 5 langs, but it has a solid niche and doesn't seem to be going away any time soon
- Read SICP.
- Learn what a type class is and some basic category theory.
You can do FP in any programming languages, some are just focusing more on it than others. With OCaml, you will have what might be the best type system of the world. With Haskell, purity everywhere. With clojure, Lisp which is awesome. So Ruby should just fit, here are some resources to make you understand what is FP :
Another interesting resource is how John Carmack talk about potential use of purity (with haskell in its case) in event passing to entities in video game at the Quake Con 2013 (~17min 30). It made me better understand how pure and impure code should coexist.
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.
yes i been already using some of functional features on it, but i want to use Lisp family language esp for AI dev
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.
might look on it!