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 - +1 415 200
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.

Reply via email to