Read lots and lots of code. I've poured over many many GH 
projects/libraries for clojure. Take a domain you are familiar with, 
preferably something you've written before in another language, find a 
library that does that thing and then read the code until you understand it 
clearly. Try to really understand what Persistent data structures are and 
how you use them.

When you don't understand some small thing don't just gloss over it. That 
works in most other languages but you really need to slow down and try to 
understand each thing before proceeding.

Some of the hardest parts of the language for me were the subtle, but very 
powerful, automatic destructuring, shorthand notations and in some cases 
the single character that can completely change the meaning or context of 
some code - like when it is evaluated. Keep asking yourself, is this code 
being executed at this point or is it going to be used later in some other 
context (usually w.r.t. lambdas...)

Next to that I had to re-learn my understanding of LISP and the idioms of 
Clojure. I had done LISP years before but all that knowledge of (car) (cdr) 
(cddr) etc was kinda useless in helping me understand the more powerful 
features of Clojure.

Also, make sure you really understand the code == data thing. That is 
really fundamental to understanding the power of LISP in general and 
Clojure in particular.

Hope this helps. Take care!

Alan



On Saturday, March 22, 2014 11:38:43 AM UTC-7, Marcus Blankenship wrote:
>
> Thanks, Jerrod, this is great advice.  Thanks so much!
>
>
> On Mar 21, 2014, at 6:53 PM, Jarrod Swart <jcs...@gmail.com <javascript:>> 
> wrote:
>
> A tip if you are completely stuck on 4clojure:
>
> Often the 4clojure problem will say you can't use a particular function. 
>  The first thing I would do is go look at the source code for that 
> function, then I would try to find other functions with similar 
> functionality.
>
> Much like learning to paint or write, you have to copy first.  Eventually 
> looking through all that source code you will start to develop a sense of 
> how a problem can be solved, and in giving any solution 4clojure lets you 
> look at the solutions of others.  Look at the most prolific 4clojure users, 
> their solutions will teach you a lot.  Look up the functions they used.  In 
> order to learn to "Think in Clojure" you need to understand how someone who 
> already can\does did what they did. 
>
> Another general tip is to harness momentum, when I started learning I 
> picked one thing that I could completely finish in a day.  And the trick is 
> to dream small, some things I did:
>
>    - List the files in a directory and sort them by type.
>    - A crypto-quote assist\solver.
>    - A small text based adventure game.
>    
>
> The goal is to get a WHOLE thing done, even if it is a small thing.  I did 
> this 2-3 times a week.  Porting old code you have done before in another 
> language is great too because the big issue here will be learning to turn 
> OO\Imperative code into functional code.
>
> I also wrote a blog post listing the resources I used when just getting 
> started: http://jarrodswart.com/beginner-resources-clojure/, and a super 
> friendly 10k foot view of the reduce function: 
> http://jarrodswart.com/clojure-like-im-five-reduce-functions/.
>
> Hope this helps,
> Jarrod
>
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com <javascript:>
> Note that posts from new members are moderated - please be patient with 
> your first post.
> To unsubscribe from this group, send email to
> clojure+u...@googlegroups.com <javascript:>
> 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+u...@googlegroups.com <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>
> Best,
> Marcus
>
> Marcus Blankenship
> \\\ Problem Solver, Linear Thinker
> \\\ 541.805.2736 \ @justzeros \ skype:marcuscreo
>  
>

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