为了了解固定点组合器的用途和用途,我写了自己的。但是我没有使用严格的匿名函数(如Wikipedia's example)编写它,而是使用了define:
(define combine (lambda (functional)
(functional (lambda args (apply (combine functional) args))))
我用factorial和fibonacci的函数对它进行了测试,它似乎有效。这是否符合定点组合器的正式定义?
答案 0 :(得分:5)
似乎答案是肯定的。显然,完全相同的组合子出现here,位于页面的中间位置:
(define Y
(lambda (f)
(f (lambda (x) ((Y f) x)))))
答案 1 :(得分:3)
答案是否定的,因为根据the blog referred to in the previous answer,它甚至不符合组合器的定义,因为'combine'是一个自由变量。