31

When I first learned Haskell, Haskell '98 was the official published language specification. Today, that specification is Haskell 2010. (I have to admit, I have a really hard time remembering what the heck the differences actually are.)

Now Haskell has been around for a long time. (Well, in computing terms it's a long time.) So what I'm wondering is... Have there been any major design changes to the language over Haskell's history? Or have all the changes been relatively minor? Is there somewhere I can find a list of these, without sitting down and reading through every version of the Haskell Report trying to spot the differences?

MathematicalOrchid
  • 61,854
  • 19
  • 123
  • 220
  • 2
    There's a very short summary on the [wiki page](http://en.wikipedia.org/wiki/Haskell_%28programming_language%29#History), which also leads us to the [Haskell 2010 release announcement](http://www.haskell.org/pipermail/haskell/2009-November/021750.html) which has a bit more info about that version. – huon Jul 02 '12 at 15:01
  • 3
    The type system has expanded pretty immensely. The de facto Haskell standard is GHC, with its wide variety of language extensions -- many of which are more or less standard these days. – Louis Wasserman Jul 02 '12 at 15:07
  • Haskell hasn't changed much between H98 and Haskell 2010. _Glasgow Haskell_ has changed a great deal in that time frame. – stephen tetley Jul 02 '12 at 20:23
  • 1
    Yeah, it's no secret that GHC implements everything _and_ the kitchen sink. ;-) I was asking specifically about the _official_ language design. For example, I gather the original Haskell _didn't have monads_. So that's a biggie. Typeclasses, too. Looks like those are the only really huge ones... – MathematicalOrchid Jul 02 '12 at 20:27
  • To update what @huon said in 4 years ago, there is now a wiki page about the differences: https://wiki.haskell.org/Haskell_2010 – alisianoi Oct 04 '16 at 10:30

2 Answers2

27

The history of the language, including major milestones and design decisions, is described in

@INPROCEEDINGS{Hudak07ahistory,
    author = {Paul Hudak and John Hughes and Simon Peyton Jones and Philip Wadler},
    title = {A history of Haskell: Being lazy with class},
    booktitle = {In Proceedings of the 3rd ACM SIGPLAN Conference on History of Programming Languages (HOPL-III},
    year = {2007},
    pages = {1--55},
    publisher = {ACM Press}
}
Don Stewart
  • 137,316
  • 36
  • 365
  • 468
  • It looks like this is about the best source of information currently written - and of course, it's an interesting read for other reasons as well. So I'm going to accept this answer. – MathematicalOrchid Jul 02 '12 at 20:28
12

The reference Dons gives is excellent and authoritative up to when it ends. Here's some stuff off the top of my head -- which includes things that made into the spec as well as things that aren't officially in the spec but which I'd consider non-experimental parts of GHC that other compilers also often aim to provide. This also includes typeclasses and other features we now consider standard but which weren't always so, but which can exist purely as libraries.

  • Hierarchical Modules
  • Monads
  • The IO Monad
  • Do notation
  • The Foreign Function Interface
  • Multi-parameter type classes
  • Imprecise exceptions
  • Typeable and Data
  • Extensible Exceptions
  • Functional Dependencies
  • Type Functions
  • Concurrent Haskell
  • STM
  • GADTs
  • The Great Monomorphism Catastrophe (i.e. loss of monad comprehensions, map specialized to lists, etc.)
  • Applicative and Traversable
  • Arrows/Arrow Notation
  • MonadFix
sclv
  • 38,665
  • 7
  • 99
  • 204
  • Note that many are in the HOPL paper: 8.2.1 Hierarchical module names; 8.1 The Foreign Function Interface; 7.2 Monads; 7.3 Monadic I/O; 7.4 Subsequent developments (STM, imprecise exceptions; etc). 6.7 GADTs. Type families I think might be the main truly new thing since the HOPL paper came out. – Don Stewart Jul 02 '12 at 16:15
  • 5
    The Great Monomorphism Catastrophe :) at least we have monad comprehensions back in ghc. – Dan Burton Jul 03 '12 at 02:26
  • 5
    Can you explain more or provide a link that explains what "The Great Monomorphism Catastrophe" was/is? Seems like there's an interesting story there, but Google gives me nothing. – thedayturns Jul 04 '12 at 23:47
  • @thedayturns For historical reasons there are things that are less generic than they should be. See, for example, https://stackoverflow.com/questions/6824255/whats-the-point-of-map-in-haskell-when-there-is-fmap or https://stackoverflow.com/questions/7463500/why-do-we-have-map-fmap-and-liftm – Petr Gladkikh Jul 14 '15 at 05:52
  • Note that with the AMP (https://wiki.haskell.org/Functor-Applicative-Monad_Proposal) and FTP (https://wiki.haskell.org/Foldable_Traversable_In_Prelude) we have undertaken some new further generalizations in the prelude. – sclv Jul 14 '15 at 17:54