Hi Sayth!

This is quite an interesting question.

I would dive into the abstractions at the core of Clojure: Seq, 
Associative, Fn, and Deref. Having a good grasp of these will give you a 
nice foundation into what the language is all about.

Seq
https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/ISeq.java
Seqs represent sequences and they are typically accessed with `first` and 
`rest`.

What things implement this?
all collections, nil, Strings, and Iterators

Used by:

map, filter, reduce, doseq, for, into, etc

Associative
https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Associative.java
Represents collections that have a key or index.

What things implement this?
maps, sets, vectors

Used by:
get, contains?

Fn
https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/IFn.java
Fn abstraction represents anything callable.

What things implement this?
fns, keywords, vectors, maps, vars

Use by:
any higher-order function

Deref
https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/IDeref.java
Used for deferred references (boxed pointers) to get the value pointed to.

What things implement this?
ref, var, atom, agent, future, delay, promise

Wow, that was kind of fun.

Eric



On Tuesday, November 10, 2015 at 5:27:44 PM UTC-6, Sayth Renshaw wrote:
>
> Morning 
>
> Currently driving through Clojure country reading Clojure for the brave 
> abs typing examples out of the clojure cookbook. 
>
> Following Paretos principle 80/20 rule the 20% usually drives the 80% of 
> outcomes. if I did a deep dive into the most important 20% of clojure what 
> would I dive into? 
>
> Cheers 
>
> Sayth

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