
On Wed, 2010-05-05 at 17:18 -0400, Kyle Murphy wrote:
Concerning your second point, I think just about any functional language isn't going to be simple or quick to learn. It's simply not a way of approaching problems that your average person (even your average programmer) is used to dealing with. Things like fold and map, the work horses of functional programming, are simply too foreign to most peoples imperative way of approaching problems.
-R. Kyle Murphy
Sorry - I wanted to respond to many posts in this thread but I choose the first post: 1. While doing fold/map may not be what is simple for average programmer I guess pattern matching/some HL functions can be relatively simple for others (pureness on the other hand do not). For example average person thinks "Add 1 to each element of list". Imperative way: for i = 0 to l.length: l[i] = l[i] + 1 # WTF? There is no x such that x = x + 1 Functional way: callOnEvery _ [] = [] callOnEvery f (x:xs) = f x:xs -- Built-in function 'map' -- Name could be 'better' add1 x = x + 1 add1ToEachElement xs = callOnEvery add1 xs Please note that I heard about person who wrote 'awesome game' in .exe file (definitely _declarative_ style of programming ;) ) and expected it to run ;) [Although fortunately it was 'hobbiest']. 2. Lisp readability depends much on formatting. While I cannot write LISP I'm usually able to read it) (defun hello-world () (format t "hello, world")) Is a merge between: def hello_world(): print "hello, world" and void hello_world() { println("hello, world") } Of course you can write obfuscation competition entries in LISP. 3. For the list of universities that first teaches functional programming - ICL begins with Haskell and from non-imperative languages Prolog is in the first year curriculum. Regards