For the sake of nitpicking, you are still using camelCase instead of hyphenation in make-student.
On 11 March 2013 02:18, Craig Ching <craigch...@gmail.com> wrote: > Alright, thanks Gary and Marko, I really appreciate the advice! > > > On Sunday, March 10, 2013 8:26:47 AM UTC-5, Marko Topolnik wrote: >> >> Several comments: >> >> 1. camelCase is not idiomatic for Clojure. Prefer lowercase-dashed-style. >> >> 2. use :keywords for map keys and, more generally, for any >> enumeration-type values (coming from a closed set of options). If you want >> JSON output, transform these into camelCased strings only at the "checkout >> desk". > > > Ugh, I *do* actually know better than that, thanks for pointing it out! > >> >> >> 3. make-student-factory is what you'd call a curried function. You'd have >> an easier time with it if you declared it as a regular two-argument function >> and then used either clojure.core/partial or a literal #(make-student >> teacher-name %). That would allow you to use the function either directly as >> a student factory, or as a factory of student factories. Note that your >> approach to use a closure is idiomatic, I'm just advising a more idiomatic >> way to get it. >> > > Ok, I *think* I understand what you're saying. I did try an anonymous > function at one point, but gave it up, I don't know why I did because it > ended up working pretty well after reading your advice. How's this then? > > (ns teachers.core > (:require [clj-json.core :as json])) > > (defn- gen-items-json > [students] > (json/generate-string {:timestamp 5000 > :items students > :identifier "id" > :label "id" > :rc 200 > :msg "Data retrieved successfully."})) > > (defn- make-student > [teacher-name > student-name > age] {:id (str teacher-name "!" student-name) > :TeacherName teacher-name > :StudentName student-name > :age age}) > > (defn- make-name [prefix n] (str prefix n)) > (defn- make-teacher-name [n] (make-name "TEACHER" n)) > (defn- make-student-name [n] (make-name "STUDENT" n)) > > (defn- make-students > [teacher-name n] > (map #(make-student teacher-name (make-student-name %) 0) > (range n))) > > (defn- spit-json > [teacher-name n] > (println "Creating " n " students for teacher: " teacher-name) > (spit (str teacher-name ".json") > (gen-items-json (make-students teacher-name n)))) > > (defn gen > [num-teachers num-students] > (doseq [teacher-name (map make-teacher-name (range num-teachers))] > (spit-json teacher-name num-students))) > > Thanks a ton for your time, this list is really a great place and I > appreciate being able to come here with questions! > > Cheers, > Craig > > -- > -- > 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. > > -- -- 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.