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.