HOPL III and the History of Haskell

Interesting draft paper on the History of Haskell by Simon Peyton Jones, Phil Wadler, Paul Hudak, and John Hughes.

This paper describes the history of Haskell, including its genesis and principles, technical contributions, implementations and tools, and applications and impact.

This paper is aimed at History of Programming Languages - HOPL III to be held in June 2007.

In 1978, the first History of Programming Language Conference (HOPL) described the development of 13 computer programming languages, the people who participated in that work, and the context in which it was undertaken. In 1993, HOPL-II contained 14 papers on the genesis and evolution of programming languages. It is time for HOPL-III, to be held with FCRC 2007 in San Diego. Each HOPL-III paper should detail the early history or evolution of a specific programming language. Preliminary ideas about each language should have been documented by 1996 and each language should have been in use by 1998.

Which leaves the question of which PLs should take part in HOPL-III?
(I guess I need to go back and remember which were documentend in I & II).

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.


Wikipedia gives handy lists, reproduced here:

* ALGOL 60 - Alan J. Perlis and Peter Naur
* APL - Adin D. Falkoff and Kenneth E. Iverson
* APT - Douglas T. Ross
* BASIC - Thomas E. Kurtz
* COBOL - Jean E. Sammet
* FORTRAN - John Backus
* GPSS - Geoffrey Gordon
* JOSS - Charles L. Baker
* JOVIAL - Jules I. Schwartz
* LISP - John McCarthy
* PL/I - George Radin
* SIMULA - Kristen Nygaard
* SNOBOL - Ralph E. Griswold

* Monitors and Concurrent Pascal - Per Brinch Hansen
* Prolog - Alain Colmerauer and Phillipe Roussel
* Icon - Ralph E. Griswold and Madge T. Griswold
* Smalltalk - Alan C. Kay
* ALGOL 68 - C. H. Lindsey
* CLU - Barbara Liskov
* Discrete Event Simulation programming languages - Richard E. Nance
* Forth - Elizabeth D. Rather, Donald R. Colburn, and Charles H. Moore
* C - Dennis M. Ritchie
* FORMAC - Jean E. Sammet
* Lisp - Guy L. Steele, Jr. and Richard P. Gabriel
* C++ - Bjarne Stroustrup
* Ada - William A. Whitaker
* Pascal - N. Wirth

It's interesting to note the arrival of lower-case in language names between 1967 (HOPL-I cutoff) and 1982 (HOPL-II cutoff).


Since I was working on item about this paper, but you beat me to the punch, let me mention a few things that caught my attention.

1. This paper has a whole section dedicated to April Fool's jokes. I think this says a lot about the language...

2. Section 6, about "Haskell as a type-system laboratory", is one of the main reasons Haskell is discussed so much here and by language mavens everywhere.

3. Sections 11.1 on combinator libraries and 11.2 about DSELs shoud be of particular interest to LtU readers.

4. Section 12.4 is about companies using Haskell commercially.

Finally, notice that the authors are soliciting feedback on the online draft for inclusion in the final version to be submitted by September.

First Post!

I figured the window was narrow on this one. :-)

the April 1 jokes are probably just a reflection of the he Haskell community having a sense of playfulness and curiosity. The paper makes it clear that they didn't realize the full expressive power of several of their ideas (e.g. type classes and monads) until they were implemented and explored.

From my likes & dislikes, the discussion of type classes is very good and illustrates many of the innovations with respect to type systems. I liked the discussion on the early attempts to model IO using streams, continuations and worlds. But the section on monads could use a bit of work - but then those of us from the outside still have a hard time understanding monads. The paper comes close to being a real good description, but falls slightly short in connecting the dots.

From a limitations perspective, the two things that come across are the formal specifications and the module system. From my understanding, a formal spec was being attempted at one time but was abandoned at some point. The thing that I didn't get from the article was the reason the formal spec was unattainable (i.e. what in the syntax/semantics of Haskell made that goal unreachable - other than time).

It will be interesting to compare the Standard ML paper. SML is at the conservative end of the spectrum, whereas Haskell is much more playful - a difference that is noted a couple of places within the article.

Formal semantics

Formal semantics was an original goal, but never actually attempted. One of the reasons the article mentions is that the user only needs to know the dynamic semantics, and not the statis semantics. (Is this really true?) And because the dynamic semantics of Haskell is not that complex, users had no problems reasoning about their programs without formal semantics.

The article also mentions that in hind sight not having formal semantics contributed to the rapid development of Haskell.

Static semantics

Formal semantics was an original goal, but never actually attempted.

This is not quite correct, there were at least two attempts: an early one by Peyton Jones and Wadler, trying to define Haskell's static semantics along the lines of The Definition of Standard ML (never got past draft status), and a later one by Faxen, mentioned in the paper, which covers Haskell 98.

I'm not aware of a dynamic semantics, even though they claim it'd be simple (which I'm not entirely convinced of).


Which leaves the question of which PLs should take part in HOPL-III?

Well, Oz meets the age criteria. And I imagine that the history of its development would be fairly interesting. Peter, if you're reading this, any plans to submit an Oz paper to HOPL III?


This paper looks very interesting, particularly the section on the type system and the occasional comment on the different directions taken compared to ML.

I also see three of the originally proposed language names have since been adopted by different projects - Mozart (Oz), Nice and Curry.

Well, Oz meets the age criteria. And I imagine that the history of its development would be fairly interesting.

Definitely. SML also, and Java and OCaml might just meet the age criteria too.

Off the top of my head...

...here's some candidates that might qualify:

  • Standard ML
  • Caml/OCaml
  • Modula-3
  • Self
  • Eiffel
  • REXX
  • Perl
  • Java
Although an Oz entry would be great, I think it wasn't until the late '90s that it really got grounding (perhaps it could be grandfathered from AKL). (Also hope that Larry Wall wouldn't dwell on post-modernism).

... and Oberon-2

You mentioned Modula-3 but not Oberon?

Oberon-2 is the final member in the family of Pascal languages, begun in 1985 by Niklaus Wirth and Jürg Gutknecht.

ETH Oberon home page

Books and papers are available online for download.

Earlier on LtU:

Project Oberon
Oberon Script

Wirth languages

Pascal was in the previous go round, though papers on Modula, Modula-2, Oberon, Oberon-2 and Component Pascal could qualify.

No Oz paper in HOPL III

Unfortunately, there is no Oz submission to HOPL III (as far as I know). Oz had a long birth process starting in the early 1990s from logic programming and maturing to a broader view. This gives it a different perspective on language concepts than Haskell. Two important precursors of Oz were AKL and LIFE. Many people were involved in the creation of Oz. Some of the main contributors are Sverker Janson (AKL), Seif Haridi (AKL), Hassan Aït-Kaci (LIFE), and Gert Smolka (Oz). Some of the history is explained in the paper Logic Programming in the Context of Multiparadigm Programming: The Oz Experience (TPLP Nov. 2003). See Section 8 for the history and Section 9 for some lessons learned. Oz development is ongoing. Recent work is on programs as collections of first-class components communicating asynchronously: see the paper Failure Handling in a Network-Transparent Distributed Programming Language (LNCS 4119, 2006). This work is influenced by Erlang. In the SELFMAN project we are just starting on a first-class component model for Oz, extending the kernel language with ideas from the Kell calculus developed by Jean-Bernard Stefani's group at INRIA.

The future of Oz

My vision for the future of Oz is explained in the paper Convergence in Language Design: A Case of Lightning Striking Four Times in the Same Place (FLOPS 2006, LNCS 3945, April 2006).

Projects with a vision should interact only occasionally

In the programming language community, there are many projects with a vision. Haskell and Oz are just two of them. There are also E, Erlang, Mercury, Curry, Scheme, Scala, and many others. I think that this is a healthy state of affairs. Projects should be free to work out their visions independently and only occasionally look over their shoulders to see how the others are doing. Otherwise progress would be much slower. For example, look at the history of astronomy. Consider how Ptolemy slowed down the progress of astronomy for fifteen centuries by putting all his weight behind a geocentric theory in his Almagest, even though Aristarchos of Samos already had a quite well-developed heliocentric theory several centuries earlier.

The deadline seems to have passed

Which leaves the question of which PLs should take part in HOPL-III?

First round papers were due January 31, 2006


More of a passive question

Still leaves me wondering which languages are in play. ...and we can always second guess the inclusions/exclusions. :-)

Past HOPL selections - how good?

Which leaves the question of which PLs should take part in HOPL-III?

For that matter, which languages in the HOPL I and II timescales were unfairly omitted? And (hoo hoo) which were undeservedly included? How have the HOPL selections passed the test of time to date?

Pretty good track record

I suppose it would have been interesting to include some of the languages that influenced C (CPL, BCPL & B), but they are cited in the papers by the languages they influenced. As a point of comparison, a paper by Turner giving the history of Miranda would be valuable, but it is somewhat built into the Haskell paper. Also, an AWK paper could have qualified in the previous go round - but Kernigan was working on the C paper and some consider AWK to be borderline as a full-fledged PL.

The biggest hassle with spaning them out over a decade is that some languages are just beginning at the start of one round but are played out by the time the next round comes along. I'm thinking of languages like Cedar and Sather (of course the timing sometime works out nicely because the CLU paper is one of the ones I enjoyed).

[Edit Note: Meant as a reply to Leo's post]

Best text ever read about Haskell

History.pdf is the best text I've read about Haskell and certainly resolved many of my questions. It contains a complete account about the language features, its successes, its evolutionary path. Very good!

Maybe LtU should have a big red button 'read this' for new members which must be pressed before entering the site! :-)


I hope more HOPL-III papers show up online, as HOPL is organized by ACM, which means the official publications will be for ACM members only.

GvR seeking early-user memories for Python HOPL entry

Guido van Rossum recently posted this on his Artima weblog:

I'm writing a paper on Python for the ACM History Of Programming Languages conference (HOPL-III). This is getting me in a bit of a nostalgic mood. Python is 16 years old now -- it can't vote yet, but it can drive a car! (At least in the US :-)

The paper will be filled with my memories of the early days, but a reviewer reminded me that the memories of other early developers might also be very useful material for the paper! Even if I don't use your story for the paper, others might enjoy reading it, so this is a call for all old-timers to write up their oldest Python memories.

From the wording and the date (last May) it seems that the paper is fairly far along the submission process, though (as I think I understand the website) Stage 1, to select the accepted papers, won't end until sometime in that 1 September - 1 January interval.

For easy reference

The History of Haskell paper is titled A History of Haskell: being lazy with class and is found here.