gpt4 book ai didi

lisp - 如何更简单地表达 lisp (lambda (pair) (apply #'f pair))?

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

假设我有以下功能:

(defun f (v1 v2) ...)

我想简化以下代码:

(lambda (pair) (apply #'f pair))

此处的目标是创建一个函数,该函数接受两个值的列表并使用该列表的内容调用 f。虽然这有效,但似乎有点冗长。有没有更简单的表达方式?

最佳答案

也许:

(lambda(p)(apply #'f p)) ;; 24 bytes

更严重的是,Alexandria提供了一个 curry 函数:

(let ((fun (curry #'apply #'f)))
(funcall fun '(a b)))

编辑:另外,我同意 @Paulo Madeira 表达的观点您的原始版本远非冗长。我想,我会让它保持原样,因为我认为它实际上比使用 assert 更容易调试。

(lambda (args) (apply #'f args))

... 意思是“获取参数列表并使用这些参数应用函数 F”。意思很简单,函数不假设 F 接受什么作为参数。如果以后更改 F,您的闭包仍将可靠地工作。

编辑:我们不知道您的代码的上下文是什么,并且在没有更多信息的情况下,您的闭包看起来很可疑。如果您能描述为什么需要传递参数,我们可能会意识到这种方法不一定是最合适的(或者同意这实际上是一件明智的事情)。

关于lisp - 如何更简单地表达 lisp (lambda (pair) (apply #'f pair))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32964119/

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