I have yet to find a Clojure book I consider suitable for a novice to FP
programming. The problem (it seems to me) is that the people who can write
books on Clojure have long ago made the paradigm shift, and don't
necessarily recall how that shift happened. This is similar to what I've
found in Smalltalk (And the similarities between Smalltalk and Lisp are
almost as profound as their differences.)

The books tend to be as dense as Clojure code itself. Which means, though,
that you can get a lot out of them the more grounding in actual code you
have. Like, I've gotten a lot out of Clojure Programming, but reading it
cover-to-cover (as I originally tried) is not the way to learn the
language.

The I Love Ponies workshop, while incomplete, is an excellent mix of theory
and practice. http://iloveponies.github.io/

What has worked for me is to try to write some code, succeed or not, dig
into some text for a while, go back to writing code, ask things on
#clojure, peek at the Clojure source (though better than that is to find
"naive" examples of how things are done in Clojure, since the reality is a
lot uglier), do some exercises on 4clojure, go back to writing code, bug
#clojure more, try to get further in some of the texts (or try to find
clarifications of things in the texts), go back to write some code, etc.

"Write some code" = I wouldn't worry much about screen I/O for starters,
just print to the REPL. Try to do code of increasing difficulty but to do
it as pure as possible. E.g., stay away from "def", except for defining
functions. Ultimately, ugly real world stuff is ugly and real, and isn't
necessarily helpful starting out.

Like, for myself, I wrote a program to solve "Mastermind" puzzles, create
and solve a maze, and stuff like that at first. This stuff is great because
it can all be done pure. Then I moved into rewriting some production Ruby
code, and noting where I had (lazily) used state, and what I got out of
taking it out when I rewrote in Clojure. I've inherited a big (10K-20K
line) Clojure project that I've been studying and trying to extend without
making a mess out of it, so there's a real-world goal for motivation.

Humility is good: Experienced Clojurers will be able to rewrite your 20
lines of ugly code into 3 lines of elegance that you probably won't even
understand at first.

Tackle it in pieces, just like you would a software project: Get the
functional part down, then branch out into things like macros, async, etc.
Don't try to take it all on at once.

My 2 cents in month 5 of my journey.




On Thu, Jul 10, 2014 at 1:37 AM, Stephen Feyrer <stephen.fey...@gmail.com>
wrote:

> Hi Sam, Lee.
>
> Thank you both.
>
> It would appear that I am faced with the old adage, "A little knowledge is
> a dangerous thing".
>
> Again thank you, you ' ve been a great help.  If I may impose upon you a
> little further?  Would either of you be able to recommend an introductory
> book either for Clojure or FP that might fit well with Clojure, for the
> mildly bewildered?  I have a book Programming Clojure but it is written
> with an assumption of prior knowledge/experience which I don't have.  By
> the way, Programming Clojure is a good book, I just don't think I fit
> within the target audience.
>
>
> On 10 July 2014 02:41, Lee Spector <lspec...@hampshire.edu> wrote:
>
>>
>> On Jul 9, 2014, at 9:31 PM, Lee Spector <lspec...@hampshire.edu> wrote:
>> > You could patch (not recommended!) this by adding "do" to the beginning
>> of that list:
>>
>> Or -- I now see, instead of adding the "do" you could just remove the
>> outermost parentheses after the parameter list. But as Sam and I said this
>> is a bad way to go anyway -- you want to avoid the nested defs.
>>
>>  -Lee
>>
>> --
>> 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
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> 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
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to