스키마에서 x
요소를 기존 목록에 i
위치에 추가하는 절차를 구현하려고합니다. 이것은 내가 생각해 낸 것입니다 :목록에 요소 추가
(define empty-list '())
(define (add i x L)
(cond ((null? L) (set! L (list x)))
((= i 0)(set! L (cons x L)))
(else (set! L (cons (car L)
(add (- i 1) x (cdr L))))
)))
(add 0 1 empty-list) -> returns()
(add 1 2 empty-list) -> returns()
(add 2 3 empty-list) -> returns()
코드는 기존 목록을 업데이트하지 않습니다. 그러나, 방금 실행하면 (set! empty-list (list 1))
또는 (set! empty-list (cons 2 empty-list))
잘 작동합니다. 나는 내가 뭘 잘못하고 있는지 이해하기 위해 고심하고있다.
매개 변수에 값을 할당하면 익숙한 다른 언어와 똑같이 작동합니다. 기능 밖에서는 아무 효과가 없습니다. 그 의도가 당신이 입력을 돌연변이시키는 것이 확실한가? Scheme 프로그램에서하는 것은 매우 드문 일입니다. – molbdnilo