【发布时间】:2015-06-06 16:43:38
【问题描述】:
我是 Clojure 的新手,正在努力理解这些概念。 REPL 帮助我获得“东西”的文档。所以我想定义一个函数...
clojure-noob.core> (doc fn)
-------------------------
clojure.core/fn
(fn name? [params*] exprs*)
(fn name? ([params*] exprs*) +)
Special Form
...
name => symbol
...文档建议我可以命名我的函数。 REPL 接受我的函数,但我无法调用它,“无法解析符号..”...
clojure-noob.core> (fn add-pair [a b] (+ a b))
#<core$eval3364$add_pair__3365 clojure_noob.core$eval3364$add_pair__3365@6fb5a33b>
clojure-noob.core> (add-pair 1 2)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: add-pair in this context, compiling:(/private/var/folders/1g/fnytl2x93sx6hp2f1rsf4h1r5xtqv_/T/form-init6828995349142227131.clj:1:1)
clojure-noob.core>
省略名称并构建适当的 fn def 确实可以完成工作,就像利用 defn 宏一样...
clojure-noob.core> (def another-add-pair (fn [a b] (+ a b)))
clojure-noob.core> (another-add-pair 1 2)
3
clojure-noob.core> (defn yet-another-add-pair [a b] (+ a b))
#'clojure-noob.core/yet-another-add-pair
clojure-noob.core> (yet-another-add-pair 3 4)
7
(doc fn) 的输出显然有些我不明白的地方。特别是,那里的name? 是什么,你能用它做什么?我一直在努力学习如何阅读文档以及理解 fn 特殊形式。谢谢。
【问题讨论】:
标签: clojure