gpt4 book ai didi

functional-programming - funcall 的语法糖?

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:05 25 4
gpt4 key购买 nike

为什么 funcall 没有语法糖?我们非常需要它。写一些像 (&#do-something arg0 arg1 arg2) 而不是 (funcall do-something arg0 arg1 arg2) 这样的东西不是很好吗 为什么不添加像Ruby 的 &: 方法符号?语言中已经有什么东西了吗?

最佳答案

语言中没有内置的东西;不过,您可以轻松地将函数分配给其他名称,然后使用它。例如,如果你想使用 &,你可以:

CL-USER> (setf (symbol-function '&) (symbol-function 'funcall))
#<FUNCTION FUNCALL>
CL-USER> (&'list 1 2 3)
(1 2 3)
CL-USER> (&'cons 'x 'y)
(X . Y)

(最近 Stack Overflow 上有一个关于第一行的不同方法的问题:How to stop evaluating lisp form when passed as function parameter?。)

Won't it be great to write something like (&#do-something arg0 arg1 arg2) instead of (funcall do-something arg0 arg1 arg2)?

可能不会。 Common Lisp 是一种更喜欢为函数和宏命名的语言。名称 funcall 被识别,它清楚地表明正在发生间接函数调用。我们为什么要掩盖这一点?显然,大多数人发现 funcall 在“短到可以写”和“长到可以描述”之间取得了适当的平衡。

Why there is no syntax sugar for funcall?

您可能会在 Common Lisp 中将宏称为“语法糖”,但这里没有必要。 Funcall 是一个函数,而不是特殊形式或宏,因此非常可以很容易地用另一个名称为其取别名,如上所示。大多数人这样做的事实应该说明它是多么令人向往。

关于functional-programming - funcall 的语法糖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508641/

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