MonadはIOとdo記法のためにあると説明した方がわかりやすくね?
Monad導入 → (たぶんListのために)Monad Comprehension導入 → (たぶんオーバーキルだったので)List Comprehensionに限定 → Monad Comprehension復活(今ここ)
2012-11-28 12:15:34@shelarcyさんからツッコミ
@NaOHaq List Comprehension の歴史について誤解がありますね。List Comprehension は、Monad 登場以前から Miranda 由来で存在していた機能で、Monad Comprehesion の機能を制限して入ったものではありません。
2012-11-29 07:56:52@NaOHaq Monad が登場してきたことで一般化した Monad Comprehension が提案され、一時 Monad Comprehension が入り、削除されて List Comprehension だけに戻った、というのが正確なところです。
2012-11-29 07:57:11@NaOHaq List Comprehension は元々存在(Miranda 由来) → Monad が提案される → Monad のための構文糖衣として List Comprehension を一般化した Monad Comprehension が提案される →
2012-11-29 07:57:34@NaOHaq 別の構文糖衣として do 記法が提案される → Haskell 1.3 で Monad と do 記法が入る → Haskell 1.4 で Monad Comprehension が入る →
2012-11-29 07:57:51@NaOHaq (Monad Comprehension よりも do 記法が好まれた、エラーメッセージが分かり難かった等の理由から)Haskell 98 で Monad Comprehension が削除されて List Comprehension だけに戻る →
2012-11-29 07:58:32@NaOHaq (SQL 用の DSL や配列などで利用したいという要求から)GHC 拡張として Monad Comprehension が復活 ← 今ココ
2012-11-29 07:59:11@NaOHaq です。 c.f http://t.co/LvSbtLcs http://t.co/rDjyuxF1 http://t.co/jorf6m0f http://t.co/r8P3TPnG
2012-11-29 08:00:28以下参考文献
Giorgidze, George and Grust, Torsten and Schweinsberg, Nils and Weijers, Jeroen, (PDF)Bringing Back Monad Comprehensions