0
皆様の現在のリストから最初の値を切り捨ててください。自分のカスタムオブジェクトを引数としてとり、そのオブジェクトのリストから最初の引数を取り出し、それを返してオブジェクトから削除します。コードは次のとおりです。Scheme
(define (make-source sequence . xs)
(let ((a (if (not (null? xs))
xs
(list #f))))
(cond ((string? sequence) (append (string->list sequence) (list a)))
((vector? sequence) (append (vector->list sequence) (list a)))
(else (append sequence (list a))))))
(define (next src)
(if (equal? (car src) '(#f))
#t
(let ((a (car src)))
(set! src (make-source (cdr src)))
a)))
問題はオブジェクトを変更せずにnext
戻り値です。 問題の修正を手伝ってもらえますか? また、新しいリストを作成することなく、そのリストから要素をカットすることは可能ですか?