Haskell2010中文報告/前言
「Some half dozen persons have written technically on combinatory logic, and most of these, including ourselves, have published something erroneous. Since some of our fellow sinners are among the most careful and competent logicians on the contemporary scene, we regard this as evidence that the subject is refractory. Thus fullness of exposition is necessary for accuracy; and excessive condensation would be false economy here, even more than it is ordinarily.」
Haskell B. Curry and Robert Feys in the Preface to Combinatory Logic [3], May 31, 1956
1987年9月,在Oregon州Portland舉辦的函數式語言與計算機體系結構(FPGA)大會上有個會議,討論了當時函數式語言社區的一些問題:有超過一打的惰性、純函數式語言,但所有這些語言在表達能力與語義上都相似。會議達成了強烈的一致:如果缺乏一個共同的標準,將會妨礙這類語言的流行。會議決定組成一個委員會來設計這個通用語言,使得新的思想能夠更快的得到響應,真實的應用開發有穩固的基礎,並且能支撐更多人使用函數式語言。本文檔即介紹那次會議及隨後日子裡,委員會的工作成果:一個叫做Haskell的純函數式語言。語言的命名是為了紀念邏輯學家Haskell B.Curry ,正是他為我們提供了語言的邏輯基礎。
目標
[編輯]委員會的最初目標是設計一個能夠滿足下列約束的語言:
- 能適用於教學、科研以及工業應用,包括構建大型系統。
- 通過發布形式語法和形式語義來完全定義
- 能夠自由獲取。任何人都有權利去實現語言並將其分布到有興趣的人
- 基於得到廣泛共識的想法
- 能夠減少函數式程式語言的不必要多樣性
Haskell2010: 語言與庫
[編輯]委員會的初衷是讓haskell作為語言設計研究的基礎,而希望它的擴展或變體來集成一些實驗性的功能。
事實上,Haskell從最初版發布後就一直在衍進發展中。到1997年中期,haskell語言已經有了5個主要版本(從1.0-1.4)。在1997年Amsterdam的Haskell工作組會議上,人們決定定義一個新的穩定變體,這就是"haskell98",於1999年2月發布。bug修訂版本在2002年成為「修訂版haskell98報告「。
在2005年的hasekll工作組會議,人們又達成一致:官方語言的一些擴展被廣泛使用(並被多個實現支持),是時候定義新一代的語言標準並將其編纂成冊,反映當今Haskell的發展。
於是,Haskell的主要工作可以理解為相對保守地擴展Hasekll 98, 僅吸納一些透徹理解、一致認可的功能特色。這也是為了得到一個"穩定「的語言,同時又能體現這些年來在語言設計研究上的大量進展。
通過這些年來在設計上的經驗,人們認識到對語言做一次性的大修改,任務量巨大,很難一下完成。最好的辦法是逐步地、增量地修改,每一個版本都只集成已經透徹理解的擴展和修改。Haskell2010是這種工作方式下的第一個版本,新的版本將逐年發布。
Haskell98 擴展
[編輯]下面列出Haskell 2010相對於Haskell 98最顯著的修改:
- 外部函數接口
- 層次化模塊命名,比如,Data.Bool
- 模式保護
移除的語言功能:
- (n+k)模式語法
Haskell資源
[編輯]Haskell的WEB站點[1]給出了許多有用資源的連結,包括:
- 語言和庫定義的在線版本
- Haskell的教程資源
- Haskell郵件列表細節
- Haskell實現
- 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 [編輯] (Yale University)
- John Hughes [編輯] (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 [編輯] (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 [編輯] (Yale University)
- Simon Peyton Jones [編輯] (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 [編輯] (University of Glasgow)
- Malcolm Wallace (University of York)
- Stephanie Weirich (University of Pennsylvania)
- David Wise (Indiana University)
- Jonathan Young (Yale University)
標示為[編輯]的人擔任協調編輯員,貢獻了語言的一個或多個修訂。
其他人也做了許多有益的貢獻,這些貢獻雖然不大,但都非常實際。下面是他們的列表: 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, and Bonnie Yantis.
最後,除了Church,Rosser,Curry等的重要基礎工作以及其他人在lambda演算上的工作外,這些年其他語言的發展也影響了Haskell,一併感謝。雖然很難直接說出許多好想法的來源,但下面的語言特別影響了Haskell,它們是: lisp(以及它的現代變體common lisp, scheme),Landin的ISWIM, APL, Backus的FP, ML和Standard ML, Hope和Hope+, Clean, ID, Lofer, Sisal, 以及Turner的系列語言包括最後的miranda. 如果沒有這些先驅語言,也就沒有Haskell.