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.