(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))))))
该程序应该用alist
替换atom1
中等于atom2
的所有元素。例如,如果我运行(replace 2 3 '(4 5 7 2 8 2 2))
,则结果应为(4 5 7 3 8 3 3)
。我一直收到错误消息“car:期待一对,给定空”。
先谢谢你们!
答案 0 :(得分:0)
您的基本情况应该是检查空列表。对于list?
,空列表仍会测试为true。因此,第一个条件应该是(null? alist)
。