gpt4 book ai didi

function - Clojure 中的宏和函数

转载 作者:行者123 更新时间:2023-12-01 02:49:56 25 4
gpt4 key购买 nike

我在此 Clojure 教程中阅读了以下行 - http://java.ociweb.com/mark/clojure/article.html#Macros

'Since macros don't evaluate their arguments, unquoted function names can be passed to them and calls to the functions with arguments can be constructed. Function definitions cannot do this and instead must be passed anonymous functions that wrap calls to functions.'



如果它是正确的,那么为什么这会起作用,因为函数立方体不是匿名的-
(defn something [fn x]
(fn x))

(defn cube [x]
(* x x x))

(something cube 4)

最佳答案

你是对的,这句话似乎不正确。我认为它想说的是你不能将看起来像函数调用的东西传递给未引用的函数:

(some-function (bla 1 2 3))

在这种情况下, (bla 1 2 3) 将被评估为函数调用,并且返回值将传递给 some-function。
(some-macro (bla 1 2 3))

在宏的情况下,传递的是列表 (bla 1 2 3) ,然后可用于通过插入参数构造新的函数调用,或执行其他操作。

正如您所展示的那样,您绝对仍然可以将一个函数传递给另一个函数,这是一种完整的文档化和预期使用的技术。

关于function - Clojure 中的宏和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5727923/

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