注意:这是一种家庭作业,有点不是——最终目标是让一个函数产生一组数字的幂集,作为数字列表提供给函数。我有该函数的递归版本,但我现在需要找到一些方法,用等效的 lambda-only 表达式替换我拥有的解决方案(等)append
中的每个显式递归函数。mapm
因此,我从较小的问题开始,并希望将它们全部结合起来编写一个完整的函数。我已经设法使用纯 lambda(Y 组合器)提出了一个非递归阶乘函数,但我现在正试图提出一个很好的函数,它将列表中的每个数字平方 - 尝试在跳跃之前解决较小的问题最多一个乘法递归函数:
(define (sqrlist numlist)
(((lambda (f)
((lambda (x) (x x))
(lambda (g)
(f (lambda (x) ((g g) x))))))
(lambda (f)
(lambda (x)
(cons (sqr (first x)) (rest x))))) numlist))
上面的代码不会递归,尽管它之前存在 Y 组合器——我显然在将正确的参数传递给其中的函数时遇到了一些问题——有什么想法吗?