Gauche > Archives > 2020/09/12

2020/09/12 17:16:29 UTCtioner
#
(define qwe 1) (define (wer a b) (set! a b)) (wer qwe 2)
で qwe が 1 のままなのは何故でしょうか。
2020/09/12 17:43:10 UTCshiro
#
変数は値につけられた名前です。(wer qwe 2) と呼び出されると、まずqweがつけられている値が取り出され、(wer 1 2)としてwerが呼ばれます。qweはこの時点で既に無関係になっちゃいます。werの中では1にa、2にbという名前がつけられます。set!はaという名前をつけ直しているだけなので、set!実行後にはaもbも2につけられています。
#
というわけでset!はaを変えるだけでqweには影響を及ぼさないのです。