在 Scheme 列表中的任意位置插入
Inserting at arbitrary position in list in Scheme
我有一个清单,例如:(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)
我有一个清单,例如:(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)