Mailing List Archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tlug] recomendations for a functional language



On 2009-11-01 21:42 +0900 (Sun), Alan Busby wrote:

> You might be interested in Clojure, it's a functional lisp that runs on the
> JVM and would cover functional programming as well as macros, DSLs, etc.

Note, however, that Clojure, being a Common Lisp variant, is not really
so functional as even Scheme, not to mention missing very interesting
features such as pattern matching and a Hindley-Milner system. I would
categorise Clojure as a slight improvement over what you've got much more
than a real learning experience.

If you really want to see as much new stuff as possible, Haskell is
probably the only real option. After you've played with that a bit and
evaluated all of the various features it has, you can decide which ones
you can live without and move on to another language from there, taking
all of your general knowledge with you.

> The value of running on the JVM really can't be understated, since it offers
> access to production quality libraries for just about everything.

I strongly disagree with that statement, though this usually provokes a
flamewar.

Java's libraries tend to have rather low quality APIs; this is often
due to the interfaces having been frozen a decade ago and the need for
backward compatability blocking any improvements. Many libraries often
do more harm than good even when using Java; Hibernate and Struts are
two particularly common examples of libraries that generally increase
the amount of code you need to write, make your application more
complex, and make it harder to debug. Things get even worse when you add
an impedence mismatch between interfaces designed for and by Java coders
and a significantly more powerful language trying to use them.

Finally, often the "need" for libraries is not really a need; it's
just someone saying, "the standard is there, so I have to use it," and
building a massive EJB-based XML-parsing RDBMS-using server half-written
in WDSL and XML, handling versioned SOA web services, when a simple
"print out the current time in ASCII when someone connects" protocol
would do just fine.

Even in the Ruby world, I often avoided the standard libraries because I
could cons up a bit of code to do just what I needed faster than I could
even start to learn the API of yet another library.

That said, if you feel you're incapable of doing this, I won't flame
you; I'll just accept that you can't.

cjs
-- 
Curt Sampson       <cjs@example.com>        +81 90 7737 2974
           Functional programming in all senses of the word:
                   http://www.starling-software.com


Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links