だいぶ進んできました。半分くらいはいったのではないかと。
モナドのすべてを読んでいるとしばしば出てくる、「複数パラメータの型クラスとfunDepという標準のHaskell 98にはない言語拡張をつかっています」の意味がようやくわかりました。