我认为有一种方法可以做到这一点,只是我找不到确切的语法。
我想要将一个接受三个参数的函数映射到大小为三的元组列表。就像这样:
(def mylist '((1 2 3)(3 4 5)))
(defn myfunc [a b c] (println "this is the first value in this tuple: " a))
(map myfunc mylist)
有人可以给我精确的语法吗?
我认为有一种方法可以做到这一点,只是我找不到确切的语法。
我想要将一个接受三个参数的函数映射到大小为三的元组列表。就像这样:
(def mylist '((1 2 3)(3 4 5)))
(defn myfunc [a b c] (println "this is the first value in this tuple: " a))
(map myfunc mylist)
有人可以给我精确的语法吗?
您只需要在其中加入一对方括号以解构嵌套的列表元素。
(defn myfunc
[[a b c]]
(println "this is the first value in this tuple: " a))
map
返回一个惰性序列,如果你不使用doall
强制求值或者在REPL中检查序列,可能无法得到你的期望副作用。d11wtq的回答非常好,这是正确的方法,除非你已经有一个你想要映射的函数。
所以,如果myfunc
是外部函数,最好使用apply
而不是编写额外的包装器:
(map (partial apply myfunc) mylist)