代入です set!はdefineされた変数に値を代入します と書くと先生に怒られるかもしれません 「名前xはaを参照しています」という言い方はここが初めてかな? こちらが正しい表現なんでしょう さっきまでaを参照していたxに、今度はbを参照させるというのがset!と いうことになります set!とdefine set!はすでにdefineされた名前についてのみ使用可能です 実際に、定義されてない名前をset!しようとするとエラーになります 逆に、define済みの名前でもう一度defineしようとするのもエラーかと思いきや成功 > (define x (cons (quote chicago) (cons (quote pizza) (quote ())))) > x '(chicago pizza) > (set! x (quote gone)) > x 'gone > (set! y