#Haskellイベントがあるよ!
Lazyな夜に語りたい人はぜひ参加してね。
詳細はsampou.orgあたりで!
##ここで告知予定。
#こんばんは
#最近、モナドについて調べているのですが、Haskellの中で最初に導入されたモナドはIOモナドなのでしょうか?
#なんとなく、『IOをどう扱うか→圏論のモナドというものが使えそう→IOモナド→これ、他にもいろいろ応用できるね→Maybeなどその他』という流れを想像しています。
##モナドのありがたみはHaskellが関係ない頃からわかっていたので、Wadlerも最初からいろんな方面への応用を言ってますし、IOモナドが最初ってのはちょっと怪しいかも
#目に見える形ではIOが最初というわけではなく、Haskellに先行していたGofer 2.28(だったと思う)で最初にパラメータをもつ型構成子のクラスというのが導入されて(パラメータをもたない型構成子については先にクラスが導入実装としてIOをモナドで構成したのはその後だったように思います。Gofer に付属のサンプルコードには、すでに
#StateモナドやReader、Writerモナドがありました。また、ファンクタやモナド以外の型構成子クラスで面白いのはTreeConクラスです。詳細はhttp://web.cecs.pdx.edu/~mpj/goferarc/gofer230b.tar.gzにあるデモプログラムを見てください。 ##WadlerとSimon P.Jones のIOに関する論文は、Mark P. Jones による Goferの実装よりも後だった気がします。
#HaskellのIOがモナドになったのは、Haskell 1.3 以降です。
#Haskellとして、型構成子クラスが導入されたのも1.3からだったような。。。
#型構成子クラスに関してはM.P.Jonesの論文があったと思います。
#do構文に先立って、モナド内包表記というものがGoferにはありました。また、過渡期にWadlerがdo-letなる構文を提案していたことがあったような、かすかな記憶があります。
#あいまいな情報ですみません。「最初」についてはM.P.Jの論文などを探るといいかもしれません。
#歴史的な話 Histroy of Haskell を参照すると良いかもしれませんね。 http://bit.ly/3tBZnI #歴史的な話をするなら Histroy of Haskell を参照すると良いかもしれませんね。 http://bit.ly/3tBZnI #せっかくこのような Haskell の歴史について纏めた文章が公開されているのですし……。
#ありがとうございます>みなさま
#あっ、訂正が間に合いませんでした……。無駄な post を作ってしまってすみません。
#Haskell の仕様としては 1.3 で do 構文を導入して、1.4 でリスト内包表記を一般化したモナド内包表記を導入して、98 でモナド内包表記の導入を撤回したという流れのようですね。
#1.3 ですね。ところで、"Type classes were generalised to higher kinds.so-called“constructor classes”"とありますが、
#実は 1.3 で導入した時点でもう既に型クラスと型構成子クラスは区別する必要がなくなっていたのでしょうか? > 型構成子クラス @nobsun