投稿は初めてで、スキームに疑問があります。次のようなパラメータを入力するときに、両方の引数として渡された要素のすべての出現箇所をリストから削除する必要があります。
]=> (rmobject '(1 2 3 5 0 2 3 5 3) 3)
エラーが発生しました:
The object (3 5 3 2 3 6 3) is not applicable
2番目のラムダが原因だと思いますが、正しく機能していませんが、なぜですか?
(define (rmobject list1 obj)
(if (null? list1)
'()
(if (= obj (car list1))
((lambda (list1) (cdr list1)) list1)
((lambda (list1) (list1)) list1)))
(cons (car list1) (rmobject (cdr list1) obj)))
私はコードを書き直しました、そしてこれは要素を取り除くことで正しく働きます、しかし適切はそうではありません、そして両方とも同じであると仮定します。前もって感謝します
(define (rmobject list1 obj)
(if (null? list1)
'()
(if (= obj (car list1))
(rmobject (cdr list1) obj)
(cons (car list1) (rmobject (cdr list1) obj)))))