[dundee] Tiling Window Managers.... XMonad anyone?
Rick Moynihan
rick.moynihan at gmail.com
Wed Jul 8 12:23:14 UTC 2009
2009/7/8 Iain Barnett <iainspeed at gmail.com>:
> 2009/7/8 James Le Cuirot <chewi at aura-online.co.uk>
>>
>> But what would I use it for? I'm not sure...
>>
>> James
>
> Anything. If you use SQL then you're using a functional language -
> describing what you want from the database and letting the engine decide the
> best way to carry out the task. Same goes for a regular expression, you
> describe the string you're looking for and then let the engine work out the
> best way. (You can give hints, of course :)
Perhaps I'm nitpicking but SQL/regexes are actually declarative
languages, likewise the definition you supplied is a great description
of declarative languages.
Functional programming is a style of programming that encourages you
to write your code as 'pure functions', i.e. procedure's that given
the same inputs always return the same result without mutating state
or causing side effects.
This said, there can be a lot of similarity between functional
langauges and declarative ones, as functional languages allow you to
easily raise the abstraction so as to provide a declarative
interpretation.
I think the conflation of the two has probably come from your Haskell
exposure... The reason Haskell is sometimes described as declarative
comes more from its laziness i.e. leaving evaluation order up to the
language than anything else.
Anyway, you should check out clojure, it's a practical lisp for the
JVM... With a strong focus on functional programming... It also
supports (and encourages) the use of fully lazy sequences, which give
you many of the laziness benefits of Haskell.
One of the coolest things about clojure is it's focus on immutable
data and concurrency support, with the jewel in its crown being its
implementation of an STM (Software Transactional Memory).
R.
More information about the dundee
mailing list