Hi!<p>As far as functional programming goes I'm a newbie. But I'm willing to put some energy there to change that.<p>Which language would you suggest me to start with? Specifics follow.<p>* Been on this line of work for about 15 years now - so not newbie in general. I can pick things up fast.<p>* Mostly doing systems work atm but have ventured to enterprise here and there. Just to be on the practical side I'd like a performant (low latency) language with easy concurrency primitives. (Is really anyone using fun. prog. in systems/embedded?)<p>* There must be (job) market value in it. So, obscure (but maybe nice) languages that have little or no market value are out of the question.<p>So far it seems the answer is leaning towards clojure but I can't imagine it being used to replace C in low latency projects.
No functional language is going to be used to replace C in low latency projects.<p>Functional programming languages fundamentally depend on having garbage collection, which is never going to be as fast as manual memory management. If anything in embedded work it makes sense to go to a model more like FORTRAN 66 where there is a lower level of amenity in functions than C has, no stack, no recursion, where the memory allocation is entirely static.<p>For instance recursion is considered unsafe for automotive systems<p><a href="https://www.i-programmer.info/news/91-hardware/6995-toyota-code-could-be-lethal-.html" rel="nofollow">https://www.i-programmer.info/news/91-hardware/6995-toyota-c...</a><p>On the other hand closures thrive on garbage collection (letting local variables escape the stack and be allocated on the heap) and persistent data structures are (reasonably) efficient if the garbage collector is cleaning up old versions that are no longer referenced.
> "There must be job market value in it."<p>Then the answer is simple, look at the jobs you want that use FP and learn that stack. In my region that'd mean Clojure and Scala.