このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

型クラスの比較

Standard MLが圧倒的に良くできているな。オーバーロードを意図してない、型システムじゃない、という問題点はあるが、許せる、許せる。

Haskellは「悪いお薬」をキメている。当座はとても元気が出るが、いずれは心身を蝕むアレ。型名に対するコアージョンを組み込みで入れている。組み込み、骨絡みだらか外せない。僕は、短絡的な発想による設計ミスだと思うが、今更どうにもならないだろう。

Scalaは、パラメータを取るという点でHaskellを踏襲してしまったので、やっぱり「悪いお薬」の影響がそのうち出るだろう。

Coqの型クラスは概念的には良く出来ているんだが、半世紀前の名前空間のせいで台無し。まったくクソになってしまっている。ほんとに残念。

メジャー言語は、型クラスを最初から入れてるわけじゃなくて後付けだから、なんか歪んでいる。利便性優先でオーガニックな構造を歪めてるか壊しているかしているので、禍根を残す、つうか禍根を“残されて”いる。

感想としては、Standard ML設計者のスマートさが際立つな。しかしながら、禁欲的でもあるから世間にはウケないかもしれない。

[追記]SML/NJでは、higher-order functorという割とエグい拡張をしている。

Moscow MLでは、higher-orderで過去にしくっていた。

IsabelleエンジンであるPoly/MLは、こういう方向への拡張はしないんだよなー。

[/追記]