The Haskell 98 Report
top | back | next | contents | function
index
"なん人もが構成論理について技術的な著述をしたが、我々も含め、 その大半は間違ったことを書いた。こうした誤ちをおかした我々の仲間の いく人かは、現在この分野では最も注意深く、気鋭の論理学者として名を つらねていることからして、この主題が手強いものである証拠と考える。 したがって、なにもかもを開示することは、正確さを得るために必要な ことであり、過度の濃密化はこの分野においては非効率で、それは通常の 場合よりも顕著である。"
Haskell B. Curry and Robert Feys in the Preface to Combinatory Logic [2], May 31, 1956
1987年9月にオレゴン州ポートランドで「関数プログラミング言語と 計算機アーキテクチャ」会議(FPCA '87)が催された。 そこでは関数プログラミングのコミュニティでの不幸な状況について 議論された。そのとき既に 1 ダースを越える数の非正格純粋関数型言語が 提案されていた。どれも、表現力と意味論の基盤という点では類似するもの だったのだ。この時の会合ではこのクラスの関数型言語が広く使われる ようにならないのは共通の汎用言語がないからだということで意見が 一致したのである。そこで、共通の言語を設計するために、 新しいアイディアを素早く交換し、実際に使えるアプリケーション開発の ための確固たる基礎と、他の人々にも関数型の言語は使える言語だ ということを知らしめるために、委員会の発足が決議された。 このドキュメントはこの委員会の努力の成果である Haskell という 純粋関数プログラミング言語について記述したものである。 この言語の名は今日我々がよりどころとしている論理学的基礎の 大部分を築く仕事をした論理学者 Haskell B. Curry に因んでいる。
この委員会の主要な目標は以下の制約を満す言語を設計することにあった。
委員会の望みは Haskell が言語設計の分野の将来の研究のための基礎を 提供できることである。実験的な機能を取り入れた、この言語の拡張や 変形の出現はのぞむところである。
Haskell は最初の公開以来ずっと進化しつづけている。1997 年の 半ばまでにはこの言語には 4 つのバージョンがあった(その時点で 最新のものは Haskell 1.4 であった)。1997 年にアムステルダムで 開催された Haskell ワークショップにおいて、Haskell の安定した バージョンが必要であると決議された。この安定したバージョン というのがこのレポートの主題であり、これを「Haskell 98」と呼ぶ。
Haskell 98 は Haskell 1.4 の比較的マイナーなバージョンアップであると 考えられ、いくつかの単純化と軽率な落し穴をふさがれた。 このバージョンの意図は「安定した」言語であり、その旨は、実装者は Haskell 98 の仕様を正確にサポートし、それは想定しうる将来に亘るものであ ることを約束するというものである。
元々の Haskell レポートは、Prelude と呼ぶ標準ライブラリと 言語仕様のみをカバーしていた。Haskell 98 が安定したころまでには、 多くのプログラムがより大きなライブラリ関数群(入出力とOSとの単純な インタラクションに関しては顕著に)アクセスする必要が生じていた。 これらのプログラムが可搬性のあるものにするには、ライブラリ群も 標準化されていなければならない。それゆれ、別の(実際にはオーバラップ していたが)委員会により、Haskell 98 ライブラリの確定へむけた努力が なされた。
Haskell 98 言語レポートとライブラリレポートは 1999 年 2 月に公開 された。
一、二年たつと、多くの誤殖や、残念な部分がめだってきた。そこで、 こうした部分の収集と訂正作業を以下のような目標をもって、おこなった。
この仕事は、予想を遥かに越えるたいへんなものであった。Haskell は より広く使われていたため、レポートは予想をはるかに越える人々によって、 丹念に調べられていた。そうした人々からのフィードバックの結果、何百 (その殆どは小さい)もの変更を採用した。元々の委員会は、オリジナルの Haskell 98 レポートが出版されたときに解散していたため、すべての 変更はすべての Haskell メイリングリストに対して提案した。
このドキュメントは、こうした調整、改良プロセスの成果である。これは、 Haskell 98 言語レポートとライブラリレポートの両方を含んでおり、 両方の公式の仕様となっている。これは、 "Gentle Introduction"[6] の ような、Haskell でのプログラミングに関するチュートリアル ではない。このドキュメントは、関数プログラミング言語に ついていくらか馴染んでいるといことを前提としている。
この両方のドキュメントはオンラインで利用可能である (下の「Haskell の情報源」をみよ)。
Haskell は Haskell 98 を越えて進化を続けている。これを書いている 時点で、以下をサポートした Haskell の実装が存在する。
他にもまだある。Haskell 98 はこうした開発を妨げるものではない。 そうではなくて、リファレンスとしての安定点を示すものである。 したがって、教科書を書こうとするものや、Haskell を教材として 使うものは、Haskell 98 (この先もずっとあるもの)の範囲内で、 それらを行うことが可能である。
Haskell のウェブサイト
http://haskell.org
では以下を含む多数の有用な情報源へのアクセスを提供している。
Haskell メイリングリストを通じて、Haskell 言語あるいはこのレポートの 表現に関する改良案、批判をおよせ下さい。歓迎いたします。
Haskell は研究者とアプリケーションプログラマの活発なコミュニティに より作られ、維持されつづけている。この言語とライブラリの委員会に 参加した人々、とりわけ、この言語に多大な時間とエネルギーを貢献して くれた人々を当時の所属とともにここに掲げる。
[editor] のマークはこの言語の一つ以上のリビジョンの監修者であることを 示している。
加えて、何十人もの人々が有用な貢献をしてくれた。いくつかは小さな
ものであるったけれど、重要なものであった。こうした人々を以下に掲げて
おく。
Kris Aerts、Hans Aberg、
Sten Anderson、Richard Bird、Stephen Blott、Tom Blenko、Duke Briscoe、
Paul Callaghan、Magnus Carlsson、Mark Carroll、Manuel Chakravarty、
Franklin Chen、Olaf Chitil、Chris Clack、Guy Cousineau、Tony Davie、
Craig Dickson、Chris Dornan、Laura Dutton、Chris Fasel、Pat Fasel、
Sigbjorn Finne、Michael Fryers、Andy Gill、Mike Gunter、Cordy Hall、Mark
Hall、Thomas Hallgren、Matt Harden、Klemens Hemm、Fergus Henderson、Dean
Herington、Ralf Hinze、Bob Hiromoto、Nic Holt、Ian Holyer、Randy Hudson、
Alexander Jacobson、Patrik Jansson、Robert Jeschofnik、Orjan Johansen、
Simon B. Jones、Stef Joosten、Mike Joy、Stefan Kahrs、Antti-Juhani
Kaijanaho、Jerzy Karczmarczuk、Wolfram Kahl、Kent Karlsson、Richard
Kelsey、Siau-Cheng Khoo、Amir Kishon、Feliks Kluzniak、Jan Kort、Marcin
Kowalczyk、Jose Labra、Jeff Lewis、Mark Lillibridge、Bjorn Lisper、
Sandra Loosemore、Pablo Lopez、Olaf Lubeck、Ian Lynagh、Christian
Maeder、Ketil Malde、Simon Marlow、Michael Marte、Jim Mattson、John
Meacham、Sergey Mechveliani、Gary Memovich、Randy Michelsen、Rick Mohr、
Andy Moran、Graeme Moss、Henrik Nilsson、Arthur Norman、Nick North、
Chris Okasaki、Bjarte M. Ostvold、Paul Otto、Sven Panne、Dave Parrott、
Ross Paterson、Larne Pekowsky、Rinus Plasmeijer、Ian Poole、Stephen
Price、John Robson、Andreas Rossberg、George Russell、Patrick Sansom、
Felix Schroeter、Julian Seward、Nimish Shah、Christian Sievers、Libor
Skarvada、Jan Skibinski、Lauren Smith、Raman Sundaresh、Josef
Svenningsson、Ken Takusagawa、Satish Thatte、Simon Thompson、Tom
Thomson、Tommy Thorn、Dylan Thurston、Mike Thyer、Mark Tullsen、David
Tweed、Pradeep Varma、Malcolm Wallace、Keith Wansbrough、Tony Warnock、
Michael Webber、Carl Witty、Stuart Wray、Bonnie Yantis
最後に、なにはさておき、ラムダ算法についての Church、Rosser、Curry とその他の人々が準備した重要な基礎的な仕事のほかに、長年にわたり 開発されてきた多くの見るべきプログラミング言語の影響力にも感謝したい と思う。多くのアイディアの源泉をいちいち正確にあげることは難しいが、 とくに、Lisp (とその現代的具現である Common Lisp と Scheme)、 Landin の ISWIM、APL、Backus の FP [1]、ML と Standard ML、Hope と Hope+、Clean、Id、Gofer、Sisal、それに Miranda (Miranda は Research Software Ltd. の商標)で頂点に達した Turner の一連の言語の影響力に感謝したい。 これらの先駆者がいなければ Haskell は誕生しなかっただろう。
Simon Peyton Jones
Cambridge, September 2002
The Haskell 98 Report
top | back | next | contents | function
index
December 2002