为了了解定点组合器的用途和用途,我编写了自己的。但是,我没有使用严格的匿名函数来编写它,例如Wikipedia 的示例,而是使用了定义:
(define combine (lambda (functional)
(functional (lambda args (apply (combine functional) args))))
我已经用阶乘和斐波那契的函数对此进行了测试,它似乎有效。这是否符合定点组合器的正式定义?
为了了解定点组合器的用途和用途,我编写了自己的。但是,我没有使用严格的匿名函数来编写它,例如Wikipedia 的示例,而是使用了定义:
(define combine (lambda (functional)
(functional (lambda args (apply (combine functional) args))))
我已经用阶乘和斐波那契的函数对此进行了测试,它似乎有效。这是否符合定点组合器的正式定义?
编辑:虽然 chessweb 或其他任何人都证实了他的答案,但暂时认为他的答案是正确的,而这个答案是错误的。
似乎答案是肯定的。显然,在页面中间出现了完全相同的组合器:
(define Y
(lambda (f)
(f (lambda (x) ((Y f) x)))))
答案是否定的,因为根据上一个答案中提到的博客,它甚至不符合combinator的定义,因为'combine'是一个自由变量。