(defn add-author [book new-author] (assoc book (conj (:authors book) new-author)))
or (defn add-author [book new-author] (assoc book (conj (get book :authors) new-author))) Ben On Wed, Oct 29, 2014 at 12:20 PM, Roelof Wobben <rwob...@hotmail.com> wrote: > Thanks James, > But how do I use assoc with it > I tried this : > (defn add-author [book new-author] > (assoc book (conj (book :authors) new-author))) > but then I see this message : > ArityException Wrong number of args (2) passed to: core$assoc > clojure.lang.AFn.throwArity (AFn.java:437) > Roelof > Op woensdag 29 oktober 2014 12:08:35 UTC+1 schreef James Reeves: >> On 29 October 2014 11:01, Roelof Wobben <rwo...@hotmail.com <javascript:>> >> wrote: >>> >>> For a exercise I have to add something to the end of a existing map. >>> >>> So I thought this would work : >>> >>> (defn add-author [book new-author] >>> (assoc book (conj :authors new-author))) >>> >> >> Take a look at that conj expression on its own: >> >> (conj :authors new-author) >> >> You're trying to conjoin "new-author" onto the keyword :authors, but >> keywords aren't collections. That's what the error means. It's saying that >> it expected a collection, but you've supplied a keyword instead. >> >> What you want is: >> >> (conj (get book :authors) new-author) >> >> Which can also be written: >> >> (conj (book :authors) new-author) >> >> (conj (:authors book) new-author) >> >> These two expressions are shortcuts for the above "get" function. They >> work because maps and keywords can act as functions. >> >> - James >> > -- > 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. -- 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.