<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Thanks. I've been reading the Hudak paper. Interesting stuff.<br><br>Maybe a better question would be which of these features, from<br><br>http://en.wikipedia.org/wiki/Haskell_%28programming_language%29#Features<br><br>*weren't* present at first launch?<br><br>------------<br><br><p>Haskell features <a href="http://en.wikipedia.org/wiki/Lazy_evaluation" title="Lazy evaluation">lazy evaluation</a>, <a href="http://en.wikipedia.org/wiki/Pattern_matching" title="Pattern matching">pattern matching</a>, <a href="http://en.wikipedia.org/wiki/List_comprehensions" title="List comprehensions" class="mw-redirect">list comprehensions</a>, typeclasses, and <a href="http://en.wikipedia.org/wiki/Type_polymorphism" title="Type polymorphism">type polymorphism</a>. It is a <a href="http://en.wikipedia.org/wiki/Purely_functional" title="Purely functional">purely functional</a>
 language, which means that in general, functions in Haskell do not have <a href="http://en.wikipedia.org/wiki/Side_effect_%28computer_science%29" title="Side effect (computer science)">side effects</a>. There is a distinct type for representing side effects, <a href="http://en.wikipedia.org/wiki/Orthogonal#Computer_science" title="Orthogonal" class="mw-redirect">orthogonal</a>
 to the type of functions. A pure function may return a side effect 
which is subsequently executed, modeling the impure functions of other 
languages.</p>
<p>Haskell has a <a href="http://en.wikipedia.org/wiki/Strongly_typed_programming_language" title="Strongly typed programming language" class="mw-redirect">strong</a>, <a href="http://en.wikipedia.org/wiki/Static_type#Static_typing" title="Static type" class="mw-redirect">static</a> type system based on <a href="http://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_inference" title="Hindley–Milner type inference" class="mw-redirect">Hindley–Milner type inference</a>. Haskell's principal innovation in this area is to add <a href="http://en.wikipedia.org/wiki/Type_class" title="Type class">type classes</a>, which were originally conceived as a principled way to add overloading to the language,<sup id="cite_ref-wadler89_14-0" class="reference"><a href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29#cite_note-wadler89-14"><span>[</span>15<span>]</span></a></sup> but have since found many more uses.<sup id="cite_ref-hallgren01_15-0"
 class="reference"><a href="http://en.wikipedia.org/wiki/Haskell_%28programming_language%29#cite_note-hallgren01-15"><span>[</span>16<span>]</span></a></sup></p>
<p>The type which represents side effects is an example of a <a href="http://en.wikipedia.org/wiki/Monad_%28functional_programming%29" title="Monad (functional programming)">monad</a>. Monads are a general framework which can model different kinds of computation, including error handling, <a href="http://en.wikipedia.org/wiki/Nondeterministic_algorithm" title="Nondeterministic algorithm">nondeterminism</a>, <a href="http://en.wikipedia.org/wiki/Parsing" title="Parsing">parsing</a>, and <a href="http://en.wikipedia.org/wiki/Software_transactional_memory" title="Software transactional memory">software transactional memory</a>. Monads are defined as ordinary datatypes, but Haskell provides some <a href="http://en.wikipedia.org/wiki/Syntactic_sugar" title="Syntactic sugar">syntactic sugar</a> for their use.</p><p><br></p><p>Michael<br></p><br>--- On <b>Thu, 1/20/11, Henk-Jan van Tuyl <i>&lt;hjgtuyl@chello.nl&gt;</i></b> wrote:<br><blockquote
 style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Henk-Jan van Tuyl &lt;hjgtuyl@chello.nl&gt;<br>Subject: Re: [Haskell-cafe] Haskell time line?<br>To: haskell-cafe@haskell.org, "michael rice" &lt;nowgate@yahoo.com&gt;<br>Date: Thursday, January 20, 2011, 5:03 AM<br><br><div class="plainMail">On Thu, 20 Jan 2011 03:49:49 +0100, michael rice &lt;<a ymailto="mailto:nowgate@yahoo.com" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt; wrote:<br><br>&gt; The Haskell language is some twenty years old. Is there a time line for what features were in the language's initial release and what has been added along the way?<br>&gt; <br>&gt; Michael<br>&gt; <br><br>For recent changes, see the page:<br>&nbsp; <a href="http://www.haskell.org/haskellwiki/Haskell_2010" target="_blank">http://www.haskell.org/haskellwiki/Haskell_2010</a><br><br>Regards,<br>Henk-Jan van Tuyl<br><br><br>--<a
 href="http://Van.Tuyl.eu/" target="_blank">http://Van.Tuyl.eu/</a><br><a href="http://members.chello.nl/hjgtuyl/tourdemonad.html" target="_blank">http://members.chello.nl/hjgtuyl/tourdemonad.html</a><br>--<br></div></blockquote></td></tr></table><br>