Haskellコードで>>=を消し、doで統一する理由

端的にいうと、普通に普及してる手続きがた言語との対比がしやすいからである。>>=の利用コードは関数式としてみると識別子の表出順序の差が大きく(というか逆)、doの利用コードでは文列としてみたときのそれが小さい。そしてHaskellソースコードをすんなり受け入れられる者は圧倒的に少ないから。


逆でしかないといえばそれまでだけど、その単なる「逆」という差は、理解するための敷居としてみるとすごく大きい。世の中にはこういうものはふつうにあるし、とくにHaskellにはそういうもの必要になることがいっぱいあって、高階関数とかカリー化でも同様なことがいえる。OOPは、「限定化する」ことでこれらを比較的従順に受け入れさせられるようにしている。このデザイン力のようなものはすごく重要だと思う。


自動車にするとマニュアルとオートマ限定みたいなもの。で、また入門Haskellについてだけど、あれってどうもアプローチがマニュアル車風。どこもかしこもクラッチの使い方が入って複雑化してるという感じ。オレすげー風って感じたのも、そういうところが正直うざかったから。今風の入門アプローチでは、先にオートマで一通りできるようにしてから限定解除になると思う。普通は運転していろいろいけるようになることが目的なんだし。解除目的も好きな車がマニュアルだからとか、仕事でマニュアル車を使うからとかそういう理由であって、みんながみんなギヤ切り替えの追及とかゼロヨン発進とかやりたいわけじゃないだろう。


かくいう自分も、オートマのままチューンしてマニュアルに対抗しようとするタイプというだけで、ニーズがないことでは同じなんだけど。