小编use*_*543的帖子

如何在Clojure中列出部分函数?

我需要在clojure中编写这样的代码.

-- haskell
fns = map (,) [1..3]
head fns $ 1
-- => (1,1)
fns <*> [1..3]
-- => [(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)]
Run Code Online (Sandbox Code Playgroud)

不起作用

(def fns (map (partial list) (range 1 3)))
((first fns) 1)
;; => ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn
Run Code Online (Sandbox Code Playgroud)

有效,但我认为这不是惯用的方式

(def fns (map (fn [x] `(partial list ~x)) (range 1 3)))
((eval (first fns)) 1)
;; => (1 1)
Run Code Online (Sandbox Code Playgroud)

clojure

2
推荐指数
1
解决办法
113
查看次数

标签 统计

clojure ×1