関数プログラミングのアプローチ (22)
参考文献
前回で、行番号を付加するプログラムを題材にした、入出力を関数的に表現する方法についての議論は終わりです。次のテーマに進む前に、これまでの内容に関するところで参考文献をあげておきたいと思います。
IOモナドは、プログラミング言語 Haskellで入出力の仕組みとして採用されている機構です。Haskellは、Haskell98という標準が策定されています。
- Haskell 98 Language and Libraries: The Revised Report, 2002. http://haskell.org/onlinereport/
- 日本語訳 http://www.sampou.org/haskell/report-revised-j/
IOモナドについては、次の論文が詳しいと思います。IOモナドの基本的な仕組みと実装方法、他の入出力の機構との比較、IOモナドの拡張について説明されています。一意型を用いてIOモナドを実装する方法についても、この論文が参考になります。
- Simon Peyton Jones and Philip Wadler, "Imperative functional programming," 1993. http://homepages.inf.ed.ac.uk/wadler/topics/monads.html
モナドを利用して協調的スレッドや例外を実装する方法については、次の論文が参考になります。
- Arjen van Weelden and Rinus Plasmeijer, "Towards a Strongly Typed Functional Operating System," 2003. http://www.st.cs.ru.nl/Onderzoek/Publicaties/publicaties.html#Papers2003
一意型は、プログラミング言語 Cleanで入出力の仕組みとして採用されている機構です。一意型は言語報告の第9章に説明されています。
- Rinus Plasmeijer, Marko van Eekelen. Clean Version 2.1 Language Report, 2002. http://clean.cs.ru.nl/
- 日本語訳 http://sky.zero.ad.jp/~zaa54437/programming/clean/LanguageReport21/