解释这个clojure语法?

jav*_*guy 0 clojure code-snippets

如何理解这个简单的clojure代码?我有点理解它想要做什么,但有人可以非常详细地解释语法,所以我可以自信地使用它吗?

(map (fn [x] (.toUpperCase x)) (.split "Dasher Dancer Prancer" " "))
Run Code Online (Sandbox Code Playgroud)

Chi*_*ron 5

来自Clojure REPL:

(doc map)
clojure.core/map
([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3&colls])返回一个惰性序列,包括将f应用于第一组的结果每个coll的项目,然后将f应用于每个coll中的第二项集合,直到任何一个colls都用完为止.其他colls中的任何剩余项都将被忽略.函数f应该接受colls of colls参数.

(.split"Dasher Dancer Prancer""")生成一个字符串序列,每个标记化的字符串将传递给(fn [x](.toUpperCase x))

但是,(fn [x](.toUpperCase x))是太多不必要的打字.你可以做:

(map #(.toUpperCase %) (.split "Dasher Dancer Prancer" " "))
Run Code Online (Sandbox Code Playgroud)

要么:

(map (memfn toUpperCase) (.split "Dasher Dancer Prancer" " "))
Run Code Online (Sandbox Code Playgroud)