On Wed, Jul 13, 2011 at 2:41 PM, Phil Hagelberg <p...@hagelb.org> wrote:
> Albert Cardona <sapri...@gmail.com> writes:
>
>> "It seems that relatively few people are taking advantage of some of
>> Clojure’s most sophisticated and unique features: metadata; protocols,
>> records, and types; and multimethods.  These facilities are absolutely
>> game-changers, at least IMO.  Either most domains have no use for them
>> (I can’t believe that), or most people don’t know how to use them
>> effectively, thus they are left unused.  Those of us that write about
>> and teach Clojure, take note."
>
> Or it could just be that some of the other things on that list were so
> compelling that they overshadowed these.
>
> * The REPL
> * Functional Programming
> * Ease of development

Good point. Though the items on that question were not mutually
exclusive (you could tick more than one), it's likely some people
ticked the one they thought most compelling and that others ticked
three or four, but only the ones they considered to be "bread and
butter" rather than "the icing on the cake".

> These are the bread-and-butter of programming, so much that I'd have a
> hard time ever working in (or even taking seriously) a language that
> didn't support them.

What about ones that seem to go out of their way not to? Java comes to
mind. VB adds in "from Microsoft" and "no free software
implementation" for added fun. :)

Languages that do have those three items you considered crucial:
Lisps, of course, and I think Python and maybe even Ruby. Smalltalk
may be a bit of an oddball case: with its "BlockContext" closures it
has roughly half of FP available (there are limits on creating and
returning and then reusing them, or using them in multiple threads)
and its "Transcript" objects are something of a REPL (it's even
possible to create new classes and methods at it by typing the right
incantations, something like BaseClass subclass: NewName ...) and
interactive development and debugging there can make development
somewhat easier than in, say, Java.

Particularly, it's rapid prototyping and quickie testing that the REPL
helps, and modularization and making small, composable, easily
testable bits and clever HOF-based abstractions that FP helps, that
contributes to the third item on your list.

> I'm a fan of using multimethods to achieve
> polymorphism, but polymorphism is only needed in a small subset of the
> code I write, while the features above affect *everything*.

Hence icing vs. bread-and-butter. Or put another way you may
appreciate the socket wrench in the toolbox even if the jobs you do
mean you mostly use the hammer, the needle-nose pliers, the
screwdrivers, and the rotary tool and reach for the wrench only
occasionally.

-- 
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to