リストの最後の要素を返す単純なスキーム関数を作成しようとしています。私の機能はうまくいくように見えますが、何かで失敗しました:
(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))
この機能を修正するにはどうすればよいですか?