point-free puzzle...って、あれ？

色々 point-free パズルとか Applicative Style とか試したわけですが、
パズルとしては面白くても、
あれが読みやすくて良いプログラムだとは思えないわけですよ、
とかどうとか云々と書いて Pull-request 送ろうと思っていたら既に本家のコードが変わっとる…。

でまあ結論は変わらないんですけども、

* do 記法内でのパターンマッチ失敗は Monad の fail が呼ばれる
* ErrorT の fail は throwError 相当である (というかまさにこれのために Error クラスが要件な気が）

というトリックで、こう書けば良い気がしますね。
まぁそこらのふつーの Monad で fail されると error で例外吐いて
何もしないとプログラム全体が死ぬので面倒なんですが。