仮に if を再定義したら、
(let ((that 10)) ;; that は 10
(if (+ 5 3)
(print that) ;; 再定義版の if だと、ここで that が 8 になってる!!
...))
となる、ってのが「参照透明性を壊す」ということ。参照透明であるなら、 that の値は
10 でなければならない。 b) というのは、もう少し上のこの文章の部分。
> 参照の透明性が保たれているプログラミング言語とは,\\ a) どの部分式も,値の等しい別の式に置き換えることができ,\\
> b) 式は任意のコンテキスト内のどこで何回使われても同じ値を返す,ようなものだ.