gpt4 book ai didi

clojure - 从存储在 var 中的表达式定义函数

转载 作者:行者123 更新时间:2023-12-04 05:05:02 24 4
gpt4 key购买 nike

我昨天问了一个类似的问题,但似乎我不得不改变我的方法,所以我做到了,但现在我又陷入了困境。

无论如何,我想做的事情是

(def bar '(* 2 %))
(#(bar) 2) ;this line doesn't work.
(#(* 2 %) 2) ;this is what I want the line that doesn't work to do.

问题是,我希望表达式存储在 var 中,这样我就可以做类似的事情
(def bar2 (list (first bar) 3 (nth bar 2)))
(#(bar2) 2) ;this line obviously doesn't work either.

也许还有另一种方法而不是 #匿名函数读取器宏。

我正在为 uni 做一个基因编程项目,所以我需要做的是有一个表达式,我可以改变并使其成为一个函数。

最佳答案

(def bar '(* 2 %))

((eval (read-string (str "#" bar))) 3)
=> 6

如果您在表达式中使用命名参数,它看起来会更清晰:
(def bar '(* 2 p))

(def f-expr (concat '(fn [p]) [bar]))

((eval f-expr) 3)
=> 6

关于clojure - 从存储在 var 中的表达式定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15621532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com