【发布时间】:2017-10-31 07:06:33
【问题描述】:
(define (min list)
(cond ((empty? (car list) '"It is empty")) <- Problem is here. Code work without this line.
((empty? (cdr list)) (car list)) ;to check list is empty
((< (car list) (min (cdr list))) (cdr list))
(else (min (cdr list) ))))
我对方案编程语言非常陌生。我正在尝试从列表中获取最小值。当我输入 () 时,程序给了我一个错误:cdr: contract violation expected: pair?给定:'()。我在这里想要做的是我想打印出来当用户输入()时它是空的。在Scheme编程中可以这样做吗?
【问题讨论】:
-
您要检查列表的第一个元素 (
car) 是否为空?还是要检查列表是否为空?如果列表为空,则不能从列表中获取第一个元素。首先,您必须检查列表是否为空。如果不为空,则可以取第一个元素。示例:(if (pair? some-list) (car some-list))。如果某物是一对,则可以取第一个元素。否则不行。