Thanks Simon, I am using the repl and I am sorry, I should have click share to make it easier, don't know what I was thinking.
Thanks everyone for your help, really appreciate it. On Feb 6, 2018 10:32 AM, "Simon Luetzelschwab" <i...@alpeware.com> wrote: > Hi Nadeen, > > Welcome to Clojure! > > I'd recommend incorporating Clojure's excellent REPL into your workflow to > easily try things out with quick feedback. > > Here's an online version with your code snippet prepopulated - just hit > the run button! > > https://repl.it/repls/OblongIntrepidAlabamamapturtle > > This should do what you like - > > (def input-file [{:st_abbrev "AZ", :firstname "john", :lastname "smith"} > {:st_abbrev "FL", :firstname "roy", :lastname > "wills"} > {:st_abbrev "OH", :firstname "jay", :lastname > "louis"}]) > > (def state-names > {"AZ" "Arizona", "FL" "Florida", "OH" "Ohio"}) > > (defn state-desc3 [e] > (assoc e :state (state-names (:st_abbrev e)))) > > (map state-desc3 input-file) > > > On Tue, Feb 6, 2018 at 5:27 AM, Nadeen Kurz <kurznad...@gmail.com> wrote: > >> Thanks for the quick response James. Yes, you hit the nail on the head >> with me not understanding map, explanation you provided helps. I like the >> second option better. I have tried both options and now I am getting >> "illegalargumentexception, key must be an integer" >> When I call >> (state-desc3 input-file) >> >> When I do this, it works find of course cause it's only one >> (state-desc3 {:st_abbr "AZ", :first name "John", :lastname "Smith"}) >> >> >> 1) maybe an index problem which I don't understand yet and researching >> >> 2) I need to figure out how to call function for testing >> >> >> On Feb 5, 2018 9:57 PM, "James Reeves" <ja...@booleanknot.com> wrote: >> >> First: >> >> (#(map :st_abbrev input-file)) >> >> Is equivalent to: >> >> (map :st_abbrev input-file) >> >> Because your putting the form in an anonymous function, then immediately >> calling it. This is equivalent to just evaluating the form. >> >> Next, I think you're confused as to how `map` handles multiple arguments. >> If you call: >> >> (map f [1 2 3] [4 5 6]) >> >> Then it will return: >> >> [(f 1 4) (f 2 5) (f 3 6)] >> >> The two collections are lined up, then passed as arguments to the >> function. >> >> If you want to put this into one function, then you don't need an inner >> map. You instead want: >> >> (defn state-desc2 [input-file] >> (let [desc2 (:st_abbrev input-file)] >> (case desc2 >> "AZ" (assoc input-file :state "Arizona") >> "FL" (assoc input-file :state "Florida") >> "OH" (assoc input-file :state "Ohio") >> "default"))) >> >> You could also write it as: >> >> (def state-names >> {"AZ" "Arizona", "FL" "Florida", "OH" "Ohio"}) >> >> (defn state-desc3 [input-file] >> (assoc input-file :state (state-names (:st_abbrev input-file)))) >> >> >> >> On 6 February 2018 at 01:22, Nadeen Kurz <kurznad...@gmail.com> wrote: >> >>> Can someone help me with the following please: I am new to clojure and i >>> haven't developed in 4 years, previous was mainframe. See questions in blue >>> >>> ; Task is to add full state name based on st_abbr >>> >>> >>> (def input-file [{:st_abbrev "AZ", :firstname "john", :lastname "smith"} >>> {:st_abbrev "FL", :firstname "roy", :lastname >>> "wills"} >>> {:st_abbrev "OH", :firstname "jay", :lastname >>> "louis"}]) >>> >>> *Question 1: How do I make these between the lines into one Defn?* >>> ----------------------------------------------------------------------- >>> (def get-state >>> (#(map :st_abbrev input-file))) >>> >>> #'user/get-state >>> ("AZ" "FL" "OH") >>> >>> (defn state-desc [get-state input-file] >>> (let [desc get-state] >>> (case desc >>> "AZ" (assoc input-file :state "Arizona") >>> "FL" (assoc input-file :state "Florida") >>> "OH" (assoc input-file :state "Ohio") >>> "default" >>> ))) >>> >>> (map state-desc get-state input-file) >>> >>> #'user/state-desc >>> ({:st_abbrev "AZ", :firstname "john", :lastname "smith", :state >>> "Arizona"} >>> {:st_abbrev "FL", :firstname "roy", :lastname "wills", :state >>> "Florida"} >>> {:st_abbrev "OH", :firstname "ja y", :lastname "louis", :state >>> "Ohio"}) >>> ------------------------------------------------------------ >>> --------------- >>> >>> Question 2: I tried to combine in one defn, but it's not working, any >>> help would be appreciated >>> >>> (defn state-desc2 [input-file] >>> (let [desc2 (#(map :st_abbrev input-file))] >>> (case desc2 >>> "AZ" (assoc input-file :state "Arizona") >>> "FL" (assoc input-file :state "Florida") >>> "OH" (assoc input-file :state "Ohio") >>> "default" >>> ))) >>> >>> (map state-desc2 input-file) >>> >>> #'user/state-desc2 >>> ("default" "default" "default") >>> >>> -- >>> 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. >>> >> >> >> >> -- >> 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. >> >> >> -- >> 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. >> > > > > -- > Alpeware LLC - 548 Market St #35286, San Francisco, CA 94104 > <https://maps.google.com/?q=548+Market+St+%2335286,+San+Francisco,+CA+94104&entry=gmail&source=g> > - +1 415 200 3094 <(415)%20200-3094> > > -- > 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.