On Tue, 17 Jul 2018 at 19:52, Christian Seberino <cseber...@gmail.com>
wrote:

> By the time a Clojure beginner is doing the kind of hardcore concurrent
> applications that Clojure is great at, he/she will know how to use a
> profiler.  At the point,  they'll be ready (and motivated!) to learn about
> the nuances of conj and friends.
>

I think this is approaching Clojure from the wrong direction. If I was
teaching Clojure, I'd build the lessons around the data structures first.

My opinion is that many languages take a "code first" approach to language
design, whereas Clojure takes a "data first" approach, and this affects how
it should best be taught.

For example, in Python you can write {1, 2} to produce a set, or {1: 2} to
produce a dict. But what does {} produce? Is it an empty set, or an empty
dict? Python chooses the latter, leaving the literal syntax for sets
incomplete. To my mind this is indicative of a design approach that sees
literal data syntax as sugar for data constructors, and not something that
deserves first class consideration.

Clojure, on the other hand, takes great care to ensure that its data can
always be represented as literals. For data that isn't a standard
collection type, there are tagged literals. Clojure syntax starts from a
representation of data, and in order to really understand it, I think it
needs to be taught from this principle as well.

-- 
James Reeves
booleanknot.com

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