たとえば、次のようなリストがあります。(B D F)
リストの任意の位置に要素を挿入したい。たとえば、要素が A の場合は B の前に挿入し、要素 C の場合は B の後、D の前に挿入します。
Schemeのリストの任意の位置に要素を挿入する方法はありますか?
このための関数を実装するのは簡単です:
(define (insert-at new k lst)
(cond ((null? lst)
(list new))
((zero? k)
(cons new lst))
(else
(cons (car lst)
(insert-at new (sub1 k) (cdr lst))))))
例えば:
(insert-at 'B 1 '(A))
=> '(A B)
(insert-at 'A 0 '(B D F))
=> '(A B D F)
(insert-at 'C 2 '(A B D F))
=> '(A B C D F)