如何使用scheme替换使用atom2等于atom1的列表中的所有元素

时间:2014-12-09 06:10:15

标签: scheme racket

(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:期待一对,给定空”。 先谢谢你们!

1 个答案:

答案 0 :(得分:0)

您的基本情况应该是检查列表。对于list?,空列表仍会测试为true。因此,第一个条件应该是(null? alist)