Lisp Scheme Part26
■ このスレッドは過去ログ倉庫に格納されています
0669デフォルトの名無しさん
2009/07/05(日) 12:47:18以下のs1で、値が変更出来るようなプログラムは書けますか?
schemeは値渡しなので無理なような気もしますが
また、test関数では内部でtをset!しているにもかかわらず
その変更は影響がないように見えますが何故なのでしょうか
(define (s1 t v) (set! t v))
(define (sa t v) (set-car! t v))
(define (sd t v) (set-cdr! t v))
(define (sa2 t v) (let ((r (cdr t))) (set-car! r v)))
(define (test f)
(define t '(()()))
(let ((r (f t 1)))
(print t)
(set! t '(()()))
r))
(test s1)
(test sa)
(test s1) ;why?
(test sd)
(test sa2)
;(map test (list s1 sa sd sa2))
■ このスレッドは過去ログ倉庫に格納されています