1
Scheme의 파괴적인 조작에 대해 혼란스러워합니다. 이 전 목록과 지구 환경에 정의 된 일부 파괴적인 절차를 가지고 있다고 가정 해 봅시다 : 그럼스키마 환경의 파괴적인 조작
(define a '(a b c))
(define (mutate-obj x)
(set! x '(mutated)))
(define (mutate-car! x)
(set-car! x 'mutated))
(define (mutate-cdr! x)
(set-cdr! x 'mutated))
우리가 다음과 같은 표현 evaulation :
(mutate-obj! a) a => (a b c)
(mutate-car! a) a => (mutated b c)
(mutate-cdr! a) a => (mutated . mutated)
왜 외부 a
에 영향을 가지고 있지 set!
자사의 절차는 set-car!
과 set-cdr!
모두? 첫 번째 줄의 표현이 (mutated)
으로 평가되지 않는 이유는 무엇입니까? 이 모든 것이 실제로 어떻게 작동합니까?
좋아요,하지만'set-car!'와'set-cdr! '는'a'에서'x'를 통해 어떻게 변형시킬 수 있습니까? –
@htor 내 업데이트 된 답변 확인 –