I have felt your pain.  I started life with Smalltalk and more or less 
spent the last 15 years in Java.  When I started Clojure, it was very hard 
to break my thinking habits.  Particularly, I was lost without manifest 
typing.  I didn't realize how much types documented my system and allowed 
very lazy thinking on my part.  I had less trouble with immutability as I 
had developed the habit of coding immutable objects in Java.  

I started dabbling in Clojure about a year ago and started coding a serious 
project about 3 months ago.  Only recently have I gotten used to thinking 
about mapping functions over data as opposed to looping through a 
collection although I still find myself coding loop/recur and then 
realizing I could use map.  I've also developed very different work habits 
due to the REPL.  

In my own case, the particular changes in my thinking that have really 
aided me are:

   1. Being able to visualize the data structure that a function is 
   operating on
   2. I find that my code falls into two categories:  computing new data or 
   transforming data structures
   3. Never try to compute new data and transform data at the same time
   4. Much of the time computing new data is either map or reduce. 
    Understanding these two (especially the flexibility of reduce) is huge
   5. 80% of the time that I want to transform data, postwalk is the answer

I'm sure that as I get to know the Clojure libraries better, the specifics 
around #4 and #5 will change but I bet the first three are pretty constant.

On Tuesday, January 14, 2014 11:01:14 AM UTC-8, g vim wrote:
>
> I recently took the plunge into learning Clojure and love it. Since I 
> tend to be single-minded/all-or-nothing about these things I'm now 
> finding it very difficult to switch mindset when I have to work with 
> Ruby. Anyone else experienced this? If you get deeply into a programming 
> language it alters the way you think and approach design/solutions which 
> is one reason I've never understood the advice to try to learn many 
> programming languages. With Clojure the functional/Lisp structure is so 
> radically different and elegant that switching to standard OO/mutable 
> state/infix approaches starts to feel alien. Maybe it's just me. 
>
> gvim 
>

-- 
-- 
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/groups/opt_out.

Reply via email to