What is the best language to learn functional programming? I've heard of Haskell, but it sounds like it has performance issues.
f# is the way of the future
>>60056343
ocaml
Haskell. It doesn't have performance issues. Check this out, I was able to learn Haskell and it made it fun rather than tedious.
>http://learnyouahaskell.com/introduction
Totally worth it in my opinion. Haskell will warp your brain, but in a good way.
If you're mainly concerned with performance Ocaml is probably the best (despite its poor multithread performance). Otherwise Idris is similar to Haskell but without the lazy evaluation and thunking, and I think I recall them adding affine types similar to Rust for deterministic resource management without GC.
For non-ML languages SBCL (Common Lisp) is known to have very good performance, though it's not really a brilliant example of principled functional design as far as Lisps go.
Clojure if you actually want to build things.
>>60056422
>>60056433
Do Common Lisp languages use similar syntax?
>>60056459
Common Lisp is an individual dialect of Lisp. If you mean 'do Lisps in general use similar syntax', yes, though some of them bolt on idosyncratic additions of their own to it (like clojure) or have other oddities (like the standardized imperative style macro abuse in Common Lisp that nonetheless still involves plain s-expressions).
>>60056343
Leaving research aside, what is functional programming used for?
>>60056343
I think ATS hits highest benchmarks, if you consider it a functional language. Ocaml might be a little faster than Haskell, but I think it would be marginal.
This may not be a popular opinion, but I recommend Scala or maybe Erlang if you want to be employed.
>>60056459
Lisp allows you to define your own syntax.
>>60056603
Isn't Scala also an OO language?
>>60056343
>performance issues
All functional languages kinda have them. Languages that allow you to directly program the machine that will run your code, will always be faster. You typically don't do that in functional languages.
At some point you have to decide, whether optimizing tight loops in C et al. is all you want to do or whether you want to learn something new and different that focuses on something else.
SML or OCaml are very nice alternatives to Haskell and have very similar ideas.
Scheme is a nice little lispy language. You won't have the benefits of infix notation or static typing, but it'll teach you about lambdas and higher order types.
Clojure or Erlang are nice if you want a functional language that also has some practical use, Clojure mostly because it runs on the JVM and has nice concurrency, Erlang also because of concurrency.
ATS is an interesting language but not that easy to learn. It's rather complicated. But it's supposed to have the performance of C++.
Coq is a nice functional language if you're interested in doing math with your computer, meaning actual math like formalizing theories proving theorems about them.
Which functional language has the most familiar syntax if I'm coming from C or Python?
LISP see >>60056889