我试图编写一个简单的方案函数来返回列表的最后一个元素。我的功能看起来应该可以工作,但我设法在某些事情上失败了:
(define (last_element l)(
(cond (null? (cdr l)) (car l))
(last_element (cdr l))
))
(last_element '(1 2 3)) should return 3
DrRacket 不断给我错误:
mcdr: contract violation
expected: mpair?
given: ()
既然(null? '())
是真的,我不明白为什么这不起作用。
这是一个我认为我需要完成作业的函数(编写函数last-element
不是赋值),并且说明说我不能使用内置函数reverse
,所以我不能只做(car (reverse l))
如何修复此功能?