相关疑难解决方法(0)

宏 - >匿名函数

我理解宏 - >在clojure中应用了为给定参数提供的所有函数.但是,它似乎不适用于匿名函数(在clojure 1.3.0上).例如:

user> (-> 4 inc inc dec)
5
Run Code Online (Sandbox Code Playgroud)

但:

user> (-> 4 #(+ % 1) #(- % 1) #(+ % 1))
Run Code Online (Sandbox Code Playgroud)

返回错误:

clojure.lang.Symbol cannot be cast to clojure.lang.IPersistentVector
[Thrown class java.lang.ClassCastException]
Run Code Online (Sandbox Code Playgroud)

如果有人知道解决方法会有所帮助.谢谢!

macros lambda clojure

33
推荐指数
3
解决办法
4083
查看次数

函数调用 - >线程宏

我们这里需要括号来调用匿名函数

user=> (-> [1 2 3 4] (conj 5) (#(map inc %)))
(2 3 4 5 6)
Run Code Online (Sandbox Code Playgroud)

为什么就没有必要加上括号map+,并fmap+在这些例子?

user=> (def map+ #(map inc %))
#'user/map+
user=> (-> [1 2 3 4] (conj 5) map+)
(2 3 4 5 6)

user=> (defn fmap+ [xs] (map inc xs))
#'user/fmap+
(-> [1 2 3 4] (conj 5) fmap+)
(2 3 4 5 6)
Run Code Online (Sandbox Code Playgroud)

clojure

9
推荐指数
1
解决办法
599
查看次数

标签 统计

clojure ×2

lambda ×1

macros ×1