update READMEs
[haskell-report.git] / report / preface.verb
1
2 \markboth{PREFACE}{PREFACE}
3 \chapter*{Preface}
4
5 \vspace{.2in}
6
7 \begin{quote}
8 ``{\em Some half dozen persons have written technically on combinatory
9 logic, and most of these, including ourselves, have published
10 something erroneous.  Since some of our fellow sinners are among the
11 most careful and competent logicians on the contemporary scene, we
12 regard this as evidence that the subject is refractory.  Thus fullness
13 of exposition is necessary for accuracy; and excessive condensation
14 would be false economy here, even more than it is ordinarily.}''
15 \begin{flushright}
16 Haskell B.~Curry and Robert Feys \\
17 in the Preface to {\em Combinatory Logic} \cite{curry&feys:book}, May 31, 1956
18 \end{flushright}
19 \end{quote}
20
21 \vspace{.2in}
22
23 \noindent
24 In September of 1987 a meeting was held at the conference on
25 Functional Programming
26 Languages and Computer Architecture (FPCA~'87) in
27 Portland, Oregon, to discuss an unfortunate situation
28 in the functional programming community: there had come into being
29 more than a dozen non-strict, purely functional programming languages,
30 all similar in expressive power and semantic underpinnings.  There
31 was a strong consensus at this meeting that more widespread use of
32 this class of functional languages\index{functional language} was
33 being hampered by the lack of a common language.  It was decided
34 that a committee should be formed to design such a language, providing
35 faster communication of new ideas, a stable foundation for real
36 applications development, and a vehicle through which others
37 would be encouraged to use functional languages.  This
38 document describes the result of that (and subsequent)
39 committee's efforts: a purely
40 functional programming language called \Haskell{},
41 \index{Haskell@@\Haskell{}}
42 named after the logician Haskell B.~Curry\index{Curry, Haskell B.}
43 whose work provides the logical basis for much of ours.
44
45 \section*{Goals}
46
47 The committee's primary goal was to design a language that
48 satisfied these constraints:
49 \begin{enumerate}
50 \item It should be suitable for teaching, research, and applications,
51       including building large systems.
52 \item It should be completely described via the publication of a formal
53       syntax and semantics.
54 \item It should be freely available.  Anyone should be permitted to
55       implement the language and distribute it to whomever they please.
56 \item It should be based on ideas that enjoy a wide consensus.  
57 \item It should reduce unnecessary diversity in functional 
58       programming languages.
59 \end{enumerate}
60
61 \section*{\Haskell{} 2010: language and libraries}
62
63 The committee intended that \Haskell{} would serve as a basis for
64 future research in language design, and hoped that extensions or
65 variants of the language would appear, incorporating experimental
66 features.
67
68 \Haskell{} has indeed evolved continuously since its original publication.
69 By the middle of 1997, there had been five versions of the language design
70 (from \Haskell{} 1.0 -- 1.4).  At the 1997 \Haskell{} Workshop 
71 in Amsterdam, it was decided that a stable variant of \Haskell{} was
72 needed; this became ``\Haskell{} 98'' and was published in February
73 1999.  The fixing of minor bugs led to the \emph{Revised} \Haskell{} 98 Report
74 in 2002.
75
76 \begin{haskellprime}
77 At the 2005 \Haskell{} Workshop, the consensus was that so many extensions
78 to the official language were widely used (and supported by multiple
79 implementations), that it was worthwhile to define another iteration of
80 the language standard, essentially to codify (and legitimise) the status
81 quo.
82
83 The \Haskell{} Prime effort was thus conceived as a relatively
84 conservative extension of \Haskell{} 98, taking on board new features
85 only where they were well understood and widely agreed upon.  It too
86 is intended to be a ``stable'' language, yet reflecting the
87 considerable progress in research on language design in recent years.
88
89 After several years exploring the design space, it was decided that a
90 single monolithic revision of the language was too large a task, and
91 the best way to make progress was to evolve the language in small
92 incremental steps, each revision integrating only a small number of
93 well-understood extensions and changes.  \Haskell{} 2010 is the first
94 revision to be created in this way, and new revisions are expected
95 once per year.
96 \end{haskellprime}
97
98 \section*{Extensions to \Haskell{} 98}
99
100 \begin{haskellprime}
101 The most significant language changes in \Haskell{} 2010 relative to
102 \Haskell{} 98 are listed here.
103
104 New language features:
105 \begin{itemize}
106 \item A Foreign Function Interface (FFI).
107 \item Hierarchical module names, e.g. @Data.Bool@.
108 \item Pattern guards.
109 \end{itemize}
110
111 Removed language features:
112 \begin{itemize}
113 \item The $(n+k)$ pattern syntax.
114 \end{itemize}
115
116 \end{haskellprime}
117
118 \section*{\Haskell{} Resources}
119 \label{sect:resources}
120
121 The \Haskell{} web site \url{http://haskell.org} gives access to many useful resources, including:
122 \begin{itemize}
123 \item Online versions of the language and library definitions.
124 \item Tutorial material on \Haskell{}.
125 \item Details of the \Haskell{} mailing list.
126 \item Implementations of \Haskell{}.
127 \item Contributed \Haskell{} tools and libraries.
128 \item Applications of \Haskell{}.
129 \item User-contributed wiki pages.
130 \item News and events in the \Haskell{} community.
131 \end{itemize}
132 You are welcome to comment on, suggest improvements to, and criticise
133 the language or its presentation in the report, via the \Haskell{}
134 mailing list, or the \Haskell{} wiki.
135
136 \section*{Building the language}
137
138 \Haskell{} was created, and continues to be sustained, by an active
139 community of researchers and application programmers.  Those who
140 served on the Language and Library committees, in particular, devoted
141 a huge amount of time and energy to the language.  Here they are, with
142 their affiliation(s) for the relevant period:
143
144 \begin{center}
145 Arvind (MIT) \\
146 Lennart Augustsson (Chalmers University) \\
147 Dave Barton (Mitre Corp) \\
148 Brian Boutel (Victoria University of Wellington) \\
149 Warren Burton (Simon Fraser University) \\
150 Manuel M T Chakravarty (University of New South Wales) \\
151 Duncan Coutts (Well-Typed LLP) \\
152 Jon Fairbairn (University of Cambridge) \\
153 Joseph Fasel (Los Alamos National Laboratory) \\
154 John Goerzen \\
155 Andy Gordon (University of Cambridge) \\
156 Maria Guzman (Yale University) \\
157 Kevin Hammond [editor] (University of Glasgow) \\
158 Bastiaan Heeren (Utrecht University) \\
159 Ralf Hinze (University of Bonn) \\
160 Paul Hudak [editor] (Yale University) \\
161 John Hughes [editor] (University of Glasgow; Chalmers University) \\
162 Thomas Johnsson (Chalmers University) \\
163 Isaac Jones (Galois, inc.) \\
164 Mark Jones (Yale University, University of Nottingham, Oregon Graduate Institute) \\
165 Dick Kieburtz (Oregon Graduate Institute) \\
166 John Launchbury (University of Glasgow; Oregon Graduate Institute; Galois, inc.) \\
167 Andres L\""{o}h (Utrecht University) \\
168 Ian Lynagh (Well-Typed LLP) \\
169 Simon Marlow [editor] (Microsoft Research) \\
170 John Meacham \\
171 Erik Meijer (Utrecht University) \\
172 Ravi Nanavati (Bluespec, inc.) \\
173 Rishiyur Nikhil (MIT) \\
174 Henrik Nilsson (University of Nottingham) \\
175 Ross Paterson (City University, London) \\
176 John Peterson [editor] (Yale University) \\
177 Simon Peyton Jones [editor] (University of Glasgow; Microsoft Research Ltd) \\
178 Mike Reeve (Imperial College) \\
179 Alastair Reid (University of Glasgow) \\
180 Colin Runciman (University of York) \\
181 Don Stewart (Galois, inc.) \\
182 Martin Sulzmann (Informatik Consulting Systems AG) \\
183 Audrey Tang \\
184 Simon Thompson (University of Kent) \\
185 Philip Wadler [editor] (University of Glasgow) \\
186 Malcolm Wallace (University of York) \\
187 Stephanie Weirich (University of Pennsylvania) \\
188 David Wise (Indiana University) \\
189 Jonathan Young (Yale University)
190 \end{center}
191
192 Those marked [editor] served as the co-ordinating editor for one or more
193 revisions of the language.
194
195 In addition, dozens of other people made helpful contributions, some small but
196 many substantial.  They are as follows:
197 Hans Aberg,
198 Kris Aerts,
199 Sten Anderson,
200 Richard Bird,
201 Tom Blenko,
202 Stephen Blott,
203 Duke Briscoe,
204 Paul Callaghan,
205 Magnus Carlsson,
206 Mark Carroll,
207 Franklin Chen,
208 Olaf Chitil,
209 Chris Clack,
210 Guy Cousineau,
211 Tony Davie,
212 Craig Dickson,
213 Chris Dornan,
214 Laura Dutton,
215 Chris Fasel,
216 Pat Fasel, 
217 Sigbjorn Finne,
218 Michael Fryers,
219 Peter Gammie,
220 Andy Gill, 
221 Mike Gunter,
222 Cordy Hall,
223 Mark Hall,
224 Thomas Hallgren,
225 Matt Harden,
226 Klemens Hemm,
227 Fergus Henderson,
228 Dean Herington,
229 Bob Hiromoto,
230 Nic Holt,
231 Ian Holyer, 
232 Randy Hudson,
233 Alexander Jacobson,
234 Patrik Jansson,
235 Robert Jeschofnik,
236 Orjan Johansen,
237 Simon B.~Jones, 
238 Stef Joosten, 
239 Mike Joy,
240 Wolfram Kahl,
241 Stefan Kahrs,
242 Antti-Juhani Kaijanaho,
243 Jerzy Karczmarczuk,
244 Kent Karlsson,
245 Martin D. Kealey,
246 Richard Kelsey,
247 Siau-Cheng Khoo, 
248 Amir Kishon, 
249 Feliks Kluzniak,
250 Jan Kort,
251 Marcin Kowalczyk,
252 Jose Labra,
253 Jeff Lewis,
254 Mark Lillibridge,
255 % The doubled "" is turned into one by the verbatim preprocessor
256 % Bj\""{o}rn Lisper,
257 Bjorn Lisper,
258 Sandra Loosemore,
259 Pablo Lopez,
260 Olaf Lubeck, 
261 Christian Maeder,
262 Ketil Malde,
263 Michael Marte,
264 Jim Mattson,
265 John Meacham,
266 Sergey Mechveliani,
267 Gary Memovich,
268 Randy Michelsen, 
269 Rick Mohr,
270 Andy Moran,
271 Graeme Moss,
272 Arthur Norman,
273 Nick North,
274 Chris Okasaki,
275 Bjarte M. {\O}stvold,
276 Paul Otto, 
277 Sven Panne,
278 Dave Parrott,
279 Larne Pekowsky,
280 Rinus Plasmeijer,
281 Ian Poole,
282 Stephen Price,
283 John Robson, 
284 Andreas Rossberg,
285 George Russell,
286 Patrick Sansom,
287 Michael Schneider,
288 Felix Schroeter,
289 Julian Seward,
290 Nimish Shah,
291 Christian Sievers,
292 Libor Skarvada,
293 Jan Skibinski,
294 Lauren Smith, 
295 Raman Sundaresh,
296 Josef Svenningsson,
297 Ken Takusagawa,
298 Wolfgang Thaller,
299 Satish Thatte,
300 Tom Thomson,
301 Tommy Thorn,
302 Dylan Thurston,
303 Mike Thyer,
304 Mark Tullsen,
305 David Tweed,
306 Pradeep Varma,
307 Keith Wansbrough,
308 Tony Warnock,
309 Michael Webber,
310 Carl Witty,
311 Stuart Wray,
312 and Bonnie Yantis.
313
314 Finally, aside from the important foundational work laid by Church,
315 Rosser, Curry, and others on the lambda calculus, it is right to
316 acknowledge the influence of many noteworthy programming languages
317 developed over the years.  Although it is difficult to pinpoint the
318 origin of many ideas, the following languages were particularly influential:
319 Lisp (and its modern-day incarnations Common Lisp and
320 Scheme); Landin's ISWIM; APL; Backus's FP
321 \cite{back78}; ML and Standard ML; Hope and Hope$^{+}$; Clean; Id; Gofer;
322 Sisal; and Turner's series of languages culminating in 
323 Miranda\footnote{{\rm Miranda} is a trademark of Research
324 Software Ltd.}. Without these forerunners \Haskell{} would not have
325 been possible.
326
327 \vspace{1in}
328
329 Simon Marlow \\
330 Cambridge, April 2010
331 %**~sfooter