Scheme 什么';这是怎么回事?
Racket因以下代码而违反合同:Scheme 什么';这是怎么回事?,scheme,racket,Scheme,Racket,Racket因以下代码而违反合同: (define (fringe x) (append (car x) (fringe (cdr x)))) 有什么问题吗?发生这种情况是因为(car x)没有返回列表(如果不知道引起错误的x的实际值,很难确定)追加是在两个列表之间定义的操作。如果要在列表的开头添加元素,请使用cons而不是append 这就是我的意思: (append 1 '(2 3)) => append: expected argument of type <proper
(define (fringe x)
(append (car x) (fringe (cdr x))))
有什么问题吗?发生这种情况是因为(car x)
没有返回列表(如果不知道引起错误的x
的实际值,很难确定)<代码>追加是在两个列表之间定义的操作。如果要在列表的开头添加元素,请使用cons
而不是append
这就是我的意思:
(append 1 '(2 3))
=> append: expected argument of type <proper list>; given 1
(append '(1) '(2 3))
=> '(1 2 3)
(cons 1 '(2 3)) ; the recommended way!
=> '(1 2 3)
(附加1'(2 3))
=>append:类型为的预期参数;给定1
(附加“(1)”(2 3))
=> '(1 2 3)
(一)(二)(三);;推荐的方式!
=> '(1 2 3)
如果没有上下文,你就指望人们知道函数应该做什么。不要让我们猜:告诉我们它应该做什么。