我正在尝试将 S 表达式列表转换为类似于The Little Schemer书中的问题的简单原子列表。
我的代码是(在 Dr.Racket 中输入):
> (define lat '((coffee) cup ((tea) cup) (and (hick)) cup))
> (define f
(lambda (lat)
(cond
((null? lat) (quote ()))
((atom? (car lat)) (cons (car lat) (f (cdr lat))))
(else (cons (f (car lat)) (f (cdr lat)))))))
> (f lat)
'((coffee) cup ((tea) cup) (and (hick)) cup)
上面的代码返回与输入列表相同的列表。我尽力了,但得到不同的答案,例如:
(coffee)
(cup . cup)
( () (()) (()) )
用于程序中的各种修改。
我想知道,我们能不能得到答案:
'(coffee cup tea cup and hick cup)
给定
'((coffee) cup ((tea) cup) (and (hick)) cup)
通过使用cond
cons
car
并且cdr
仅.