Create seq cards from two or more sections

I'm new to Clojure, and I was wondering if there is a way to create a sequence of cards from two or more sequences.

Let's say you have:

(def numbers '(1 2 3))
(def letters '("a" "b" "c"))
(def shapes '("circle" "square" "triangle")) 

If you combined the ones I would like to get, what would be an array of hashes in Ruby or in Clojure as a sequence of cards?

({:number 1, :letter "a", :shape "circle"} {:number 2, :letter "b", :shape "square"} {:number 3, :letter "c", :shape "triangle"})

thank!

+5
source share
2 answers
 (map (fn [n l s] {:number n, :letter l, :shape s})  numbers letters shapes) ;;=> 
 ({:number 1, :letter "a", :shape "circle"} {:number 2, :letter "b", :shape "square"} {:number 3, :letter "c", :shape "triangle"})
+4
source

I am sure there is a more idiomatic way to do this, but:

(map (fn [n l s] {:number n, :letter l, :shape s}) numbers letters shapes)

Or even

(map #(do {:number %1, :letter %2, :shape %3}) numbers letters shapes)
+4
source

All Articles