- 669 名前:デフォルトの名無しさん mailto:sage [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))
|

|