From: ara.t.howard@... Date: 2006-08-10T00:03:43+09:00 Subject: Re: Language chatter On Wed, 9 Aug 2006, Francis Cianfrocca wrote: > Simen Edvardsen wrote: > > >> In mathematics and computer science, higher-order functions or >> functionals are functions which do at least one of the following: >> >> * take one or more functions as an input >> * output a function >> >> According to this definition, Ruby's standard library is filled with >> higher order functions, as are the libraries of Ocaml, Scheme etc. > > > This comment is extremely interesting. It is actually *not* the case > that Ruby's "functions" are functions in the mathematical sense. They > are actually objects that point to blocks of executable code or to > closures. They have the ability to execute instructions that modify the > contents of memory or produce other side effects so as to make visible > the results of operations that simulate mathematical functions. > > But true functional languages directly expose composable mathematical > functions (mappings from a possibly infinite domains to ranges). Pure > functional languages don't expose any side effects at all. They are > extremely effective at modeling computations (I once wrote a complete, > correct qsort in 7 lines of ML) but not very good at executing > communications or data transport tasks, which are all about side > effects. > > I've often been mystified when people talk about Ruby's metaprogramming, > closures, lambdas, etc. as constituting a "functional" programming > style. Your comment is striking because it made me realize that perhaps > many people who learn languages like Scheme are actually trying to apply > the imperative, Turing-style computational model to languages that don't > support them. And that reinforces all the more my intuition that pure FP > is not well-suited for mainstream professional programming. > > Years ago, I spent a lot of time trying to teach professional > programmers to grasp the functional style. And most people couldn't even > let go of the concept of variables as little boxes holding readable and > writable values. That's when I gave up on FP. interesting. but then you have ocaml, which is a bastard of oop/fp and impertive features - what's wrong there? cheers. -a -- to foster inner awareness, introspection, and reasoning is more efficient than meditation and prayer. - h.h. the 14th dali lama