如何使用scheme将列表中等于atom1的所有元素替换为atom2
程序应将如何使用scheme将列表中等于atom1的所有元素替换为atom2,scheme,racket,Scheme,Racket,程序应将alist中等于atom1的所有元素替换为atom2。例如,如果我运行(replace23'(457282)),结果应该是(45733)。我不断收到错误信息“car:期望一对,如果是空的”。 提前谢谢各位 您的基本情况应该是检查空列表。对于list?,空列表仍然测试为真。所以第一个条件应该是(null?alist)非常感谢Chris! (DEFINE (replace atom1 atom2 alist) (COND ((NOT (LIST? alist)) #F)
alist
中等于atom1
的所有元素替换为atom2
。例如,如果我运行(replace23'(457282))
,结果应该是(45733)
。我不断收到错误信息“car:期望一对,如果是空的”。
提前谢谢各位 您的基本情况应该是检查空列表。对于
list?
,空列表仍然测试为真。所以第一个条件应该是(null?alist)
非常感谢Chris!
(DEFINE (replace atom1 atom2 alist)
(COND
((NOT (LIST? alist)) #F)
;((LIST? atom1) #F)
;((LIST? atom2) #F)
((= (car alist) atom1) (cons atom2 (replace atom1 atom2 (cdr alist))))
(ELSE (cons (car alist) (replace atom1 atom2 (cdr alist))))))