だから私は、1つの要素と1つのリストを取り、要素が複製されたリストを返すスキーム関数を書いてい(replicate 'd '(a b c 1 d))
ます'(a b c 1 d d))
。
ただし、要素がリストの一部ではない場合は常に元のリストが返され、含まれている場合は要素が返されます。私はスキームに不慣れで、自分のエラーがどこにあるかを見つけるのに苦労しています。助けていただければ幸いです!
(define (replicate elmt set)
(cond((null? set) '())
((member? elmt set)(replicate_helper elmt set))
(else set)))
(define (replicate_helper elmt set)
(cond (eq? (car set) elmt) (cons elmt set)
(else (cons (car set)
(replicate_helper elmt (cdr set))))))
またメンバー?要素がリストにある場合は #t を返し、そうでない場合は #f を返す私の関数です。外観は次のとおりです。
(define (member? elmt set)
(cond ((null? set) #f)
((eq? elmt (car set)) #t)
(else(member? elmt (cdr set)))))