Hello, I'm a long-time Java programmer who's tired of mutability
getting in my way. I've been largely enjoying the pervasive use of
closures in JavaScript, and though I'd check out Clojure.

So far so good. It installed easily and the REPL is easy to use. I've
watched the screencasts and have written a few very simple programs.
But I have some general questions:

1. What is the justification for using a map as a function? I find
this to be very confusing.
2. In practice, I find myself wincing when needing to decide whether
or not to type an open-paren. Is that a common thing?
3. Is there a compendium of recursive idioms, ideally expressed in
clojure? Including indentation conventions! (Is there an opportunity
for a python inspired pre-processor that interprets indentation as
parens?)
4. Why don't long-running clojure programs monotonically increase in
heap usage if all data-structures are immutable?
5. In the REPL, isn't it redundant to always have to type the top-
level parens?
6. Is there a place to get guidlines on macro idioms? The feature is
so powerful that it seems like it would be easy to misuse it and crack
a programmers head like a nut with a badly structured macro.

I also have some philosophical questions:
1. Isn't the world actually imperative? And mutable? Collaboration
*is* a messy proposition in real life. It's hard to fix your car, and
even harder to have lots of people fix your car. I find the "it models
the real world better" justification for functional programming rather
confusing. (Indeed, the CPU and physical memory also have an
imperative relationship!)
2. 'Side-effects' are treated almost as a bad word by most functional
programming advocates. And yet, aren't ALL programs executed for their
side-effects? Does "side effect" perhaps then require a qualification
or a tighter definition? Or perhaps side-effects "aren't that bad"?
3. What is the relationship between the "shape" of a clojure program
and the runtime call stack? (I ask because a clojure program looks
strikingly similar to the callstack of an ordinary program when you
'pause' a thread.)
4. Is it possible (and/or advisable) to introduce a typing system on
top of clojure? E.g. a macro-form along the lines of (fnif
type_function function args)

-- 
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