我有一个从 lambda 获得的列表,我想创建(并返回)一个包含列表元素的列表。计划不允许我这样做。
#lang racket
(define omega
(lambda (n)
(if (= n 0) 'Φ
(cons (omega (- n 1)) '(omega (- n 1))))))
这是2个输出:
> (omega 0)
'Φ
> (omega 1)
'(Φ omega (- n 1))
> (omega 2)
'((Φ omega (- n 1)) omega (- n 1))
第一个输出是正确的,但我希望第二个输出是:
'(Φ '(Φ))
并且(欧米茄2)将返回
'(Φ '(Φ) '(Φ '(Φ)))
实际上,我想要的结果,用数学符号表示,是:
ω(n) = If n=0 return ϕ, else, return ω(n-1)∪{ω(n-1)}