緒言

片手ではたりない数の人々が結合論理について技術的な著述をなしたが,我々も含め, その大半は間違ったことを書いて出版してしまった.こうした誤ちをおかした我々の仲間のいく人かは、 現在この分野では最も注意深い、気鋭の論理学者として名をはせている.このことからして,この主題が 手強いものであることは明かである.したがって、なにもかもを開示することは、正確を期すために 必要なことである.通常はエッセンスに濃密化したほうが効率がよいのであるが,過度の濃密化は この分野においては非効率なのである.

Haskell B. Curry and Robert Feys
Combinatory Logic [3]の緒言より. 1956年 5月31日

1987年9月にオレゴン州ポートランドで「関数プログラミング言語と計算機アーキテクチャ」 会議(FPCA ’87)が催された.そこでは関数プログラミングのコミュニティでの不幸な状況について 議論された。そのとき既に両手では足りない数の非正格純粋関数型言語が提案されていた.どれも, 表現力と意味論の基盤という点では類似するものだったのだ.この時の会合ではこのクラスの関数型言語が提案されていた.どれも,表現力と意味論の基盤という点では類似するものだったのだ. この時の会合ではこのクラスの関数型言語が広く使われるようにならないのは共通の汎用言語がないからだ ということで意見が一致したのである.そこで,共通の言語を設計するために,新しいアイディアを 素早く交換し,実際に使えるアプリケーション開発のための確固たる基礎と,他の人々にも関数型の言語は 使える言語だということを知らしめるために,委員会の発足が決議された.このドキュメントは この委員会の努力の成果である Haskell という純粋関数プログラミング言語に ついて記述したものである.この言語の名は今日我々がよりどころとしている論理学的基礎の大部分を築く 仕事をした論理学者 Haskell B. Curry に因むものである.

目標

この委員会の主要な目標は以下の制約を満す言語を設計することにあった.

  1. 教えること,研究すること,大規模なシステムを構築することを含む応用に適するものであること.
  2. 形式的な構文と意味論の公開をもって完全に記述されたものであること.
  3. 自由に利用できるものであり,誰でもこれを実装することを許可され,誰にでも配布することが許可されているものであること.
  4. 広く認められたアイディアに基づいているものであること.
  5. 関数型プログラミング言語における不必要な多様性を軽減するものであること.

Haskell 2010: 言語とライブラリ

委員会の望みは Haskell が言語設計の分野の将来の研究のための基礎を提供できることである.実験的な機能を取り入れた,この言語の拡張や変形の出現はのぞむところである.

Haskell は最初の公開以来ずっと進化しつづけている. 1997 年の半ばまでに,この言語には 5 つのバージョンがあった(Haskell 1.0 から 1.4 である). 1997 年にアムステルダムで開催された Haskell ワークショップにおいて、Haskellの安定した バージョンが必要であると決議された。 この安定したバージョンというのが「Haskell 98」となり,1999年に公開された. これにあった小さなバグのいくつがが修正され改訂 Haskell 98 報告書となったのが,2002年のことである.

2005年の Haskell ワークショップにおいて,公式言語に対して多数の拡張があり(複数の言語実装でサポートされ),広く使われているとの共通認識がなされた上で,この言語標準の次の改訂を決め,現状を成文化(正当化)すべきときだというコンセンサスが形成された.

その結果,Haskellプライムの取り組みは Haskell 98 へのどちらかといえば保守的拡張と考えられ,新しい機能については十分に理解され広く同意の得られたものに限定することとされた.また,Haskellプライムは「安定した」言語を目指すものとするものの,最近の言語設計研究の大きな進展を反映するとされた.

設計分野における数年の探求ののち,この言語をモノリシックな改訂版とするのはあまりに大変な仕事であり,小さなステップに分けて進化させるという方法が最良であり,それぞれの改訂で少数の良く理解の得られた拡張や変更を取り入れることとなった.Haskell 2010 はこうしたプロセスを経て作成された最初の改訂版である.今後は毎年新しい改訂がなされることになっている.

Haskell 98 への拡張

Haskell 2010 の Haskell 98 からのもっとも大きな変化を以下に列挙する.

新しい言語機能:

削除された言語機能:

Haskell の情報源

Haskell のウェブサイト http://haskell.orgでは以下の情報を含む多数の有用な情報源へのアクセスを提供している.

Haskell メイリングリストあるいは Haskell wiki を通じて,Haskell 言語あるいはこのレポートの表現に関する改良案,批判はこれを歓迎する.

言語の構築

Haskell は研究者とアプリケーションプログラマの活発なコミュニティにより作られ,継続的に維持されている.この言語とライブラリの委員会に参加した人々,とりわけ,この言語に多大な時間とエネルギーを貢献してくれた人々を当時の所属とともにここに掲げる.

Arvind (MIT)
Lennart Augustsson (Chalmers University)
Dave Barton (Mitre Corp)
Brian Boutel (Victoria University of Wellington)
Warren Burton (Simon Fraser University)
Manuel M T Chakravarty (University of New South Wales)
Duncan Coutts (Well-Typed LLP)
Jon Fairbairn (University of Cambridge)
Joseph Fasel (Los Alamos National Laboratory)
John Goerzen
Andy Gordon (University of Cambridge)
Maria Guzman (Yale University)
Kevin Hammond [editor] (University of Glasgow)
Bastiaan Heeren (Utrecht University)
Ralf Hinze (University of Bonn)
Paul Hudak [editor] (Yale University)
John Hughes [editor] (University of Glasgow; Chalmers University)
Thomas Johnsson (Chalmers University)
Isaac Jones (Galois, inc.)
Mark Jones (Yale University, University of Nottingham, Oregon Graduate Institute)
Dick Kieburtz (Oregon Graduate Institute)
John Launchbury (University of Glasgow; Oregon Graduate Institute; Galois, inc.)
Andres Löh (Utrecht University)
Ian Lynagh (Well-Typed LLP)
Simon Marlow [editor] (Microsoft Research)
John Meacham
Erik Meijer (Utrecht University)
Ravi Nanavati (Bluespec, inc.)
Rishiyur Nikhil (MIT)
Henrik Nilsson (University of Nottingham)
Ross Paterson (City University, London)
John Peterson [editor] (Yale University)
Simon Peyton Jones [editor] (University of Glasgow; Microsoft Research Ltd)
Mike Reeve (Imperial College)
Alastair Reid (University of Glasgow)
Colin Runciman (University of York)
Don Stewart (Galois, inc.)
Martin Sulzmann (Informatik Consulting Systems AG)
Audrey Tang
Simon Thompson (University of Kent)
Philip Wadler [editor] (University of Glasgow)
Malcolm Wallace (University of York)
Stephanie Weirich (University of Pennsylvania)
David Wise (Indiana University)
Jonathan Young (Yale University)

[editor] のマークはこの言語の一つ以上の改訂版の監修者であることを示している.

加えて,何十人もの人々が有用な貢献をしてくれた.いくつかは小さなものであるったけれど,重要なものであった.こうした人々を以下に掲げて おく.Hans Aberg, Kris Aerts, Sten Anderson, Richard Bird, Tom Blenko, Stephen Blott, Duke Briscoe, Paul Callaghan, Magnus Carlsson, Mark Carroll, Franklin Chen, Olaf Chitil, Chris Clack, Guy Cousineau, Tony Davie, Craig Dickson, Chris Dornan, Laura Dutton, Chris Fasel, Pat Fasel, Sigbjorn Finne, Michael Fryers, Peter Gammie, Andy Gill, Mike Gunter, Cordy Hall, Mark Hall, Thomas Hallgren, Matt Harden, Klemens Hemm, Fergus Henderson, Dean Herington, Bob Hiromoto, Nic Holt, Ian Holyer, Randy Hudson, Alexander Jacobson, Patrik Jansson, Robert Jeschofnik, Orjan Johansen, Simon B. Jones, Stef Joosten, Mike Joy, Wolfram Kahl, Stefan Kahrs, Antti-Juhani Kaijanaho, Jerzy Karczmarczuk, Kent Karlsson, Martin D. Kealey, 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, Christian Maeder, Ketil Malde, Michael Marte, Jim Mattson, John Meacham, Sergey Mechveliani, Gary Memovich, Randy Michelsen, Rick Mohr, Andy Moran, Graeme Moss, Arthur Norman, Nick North, Chris Okasaki, Bjarte M. Østvold, Paul Otto, Sven Panne, Dave Parrott, Larne Pekowsky, Rinus Plasmeijer, Ian Poole, Stephen Price, John Robson, Andreas Rossberg, George Russell, Patrick Sansom, Michael Schneider, Felix Schroeter, Julian Seward, Nimish Shah, Christian Sievers, Libor Skarvada, Jan Skibinski, Lauren Smith, Raman Sundaresh, Josef Svenningsson, Ken Takusagawa, Wolfgang Thaller, Satish Thatte, Tom Thomson, Tommy Thorn, Dylan Thurston, Mike Thyer, Mark Tullsen, David Tweed, Pradeep Varma, 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 それに Miranda1で頂点に逹っした Turner による一連の言語から受けた影響に感謝したい. これらの先駆者がいなければ Haskell は誕生しなかったであろう.

Simon Marlow
Cambridge, April 2010