Stu wrote in post #994213:
Which language would be a decent new users language which would fit
well into my unix toolkit above as well as threading the knowledge
back into ruby's hybrid programming?
If you are coming to functional programming from an imperative
background, I would recommend Erlang as a sound starting point. It's a
highly practical language for real-world applications, albeit with a
frustrating syntax.
In Erlang, functions can and do have side effects, in particular the
sending of messages between processes. However variables can be bound
only once, and data structures are immutable. There is no "A = A + 1"
So each individual process is functional, and you start getting your
head around functional algorithms "in the small", such as using
recursion for looping and traversing data structures. But you don't have
to worry about building your entire application in a purely functional
form.
The immutability of data means concurrency is easy (no mutexes!) and you
have zero-copy passing of data structures, at least between processes on
the same node.