それは一概に言えないです。代入があるから再代入ができるということは本質的ではないです。他の言語でも定数に代入すると言いますし。
do
input <- getContents
本文中で上記のコードに対して
inputという変数に代入する
と説明しているため、ここで
input
を定数と考える人は少ない気がします。
そのため、
input
を通常の変数として認識した場合、よくあるプログラミング言語を知っている人であれば、自然に変数
input
に対して再代入できそうだなと僕なら思うのですが、そうでもないのかな・・・。
またそれ以前に、実際のところshadowingしてしまったら再代入と区別ができなくなります。だからある意味で再束縛もできてしまうと考えた方が自然ではないでしょうか?
shadowing すれば、確かに再代入のように見えます。が、再代入ではありませんし、shadowing は GHC がデフォルトで警告を出すように Haskell の書き方として推奨されていないように思います。そのため、他言語に親しみのある人に対して代入という言葉を足がかりに Haskell を説明すること自体は良いと思うのですが、背後にあるプロセスについては簡単で良いので説明した方が良いと思うのです。(新しい変数を作ってそれを使っていると言えば良いだけなので)
そもそも Haskell が
純粋 と言うのはそういう部分に支えられています。
まあただ、それを踏まえた上で「代入」が初出した時点で脚注を加える、というのはありかな、という気がしてきました。
必要なら、何かしら代入と束縛の違いについての文章を書きますよ!
これからHTMLに書き出すよう変換しようと思っていたため
少し思ったのが、実際に試してもらう際は静的にリンクされたバイナリをどこからかダウンロードして利用するという方法でしょうか?
現状でも初回ビルドで2~3分ぐらい?かかるので、pandoc を依存関係に入れるとかなりビルドに時間がかかりそうな気がします。。。