注意:这是一种家庭作业,而不是一种 - 最终目标是拥有一个函数,该函数生成一组数字的幂集,作为数字列表提供给该函数。我有函数的递归版本,但现在我需要找到解决方案我有(替换每个明确递归函数的一些方法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))
Run Code Online (Sandbox Code Playgroud)
上面的代码不会递归,尽管在它之前存在 Y 组合器——我显然在将正确的参数传递给其中的函数时遇到了一些问题——有什么想法吗?
寻找一个类似于以下内容的函数:
(foo 3 2) => '( ( (1 1) (1 2) (1 3) )
( (2 1) (2 2) (2 3) ) )
Run Code Online (Sandbox Code Playgroud)
DrRacket中是否有任何内置函数可以实现这一功能?