Scheme - 如何修改列表中的单个元素?

时间:2009-11-19 01:48:02

标签: lisp list scheme

如果我有一个0的列表,我将如何修改,例如,列表中的第16个?

1 个答案:

答案 0 :(得分:3)

你必须自己写。它不是内置于Scheme中,因为它不是惯用的,可以从set-car!轻松构建。

(define (list-set! l k obj)
  (cond
    ((or (< k 0) (null? l)) #f)
    ((= k 0) (set-car! l obj))
    (else (list-set! (cdr l) (- k 1) obj))))

如果你这么做很多,你应该考虑使用向量和vector-set!代替。