Add benchmarks and improve substring matching performance.
authorSean <burton.seanr@gmail.com>
Mon, 28 Sep 2015 13:42:15 +0000 (14:42 +0100)
committerSean <burton.seanr@gmail.com>
Mon, 28 Sep 2015 14:40:34 +0000 (15:40 +0100)
Data/ByteString.hs
bench/BenchAll.hs
bench/bench-bytestring.cabal
bench/wiki-haskell.html [new file with mode: 0644]

index 90eb301..2737549 100644 (file)
@@ -219,6 +219,12 @@ import Prelude hiding           (reverse,head,tail,last,init,null
                                 ,getContents,getLine,putStr,putStrLn,interact
                                 ,zip,zipWith,unzip,notElem)
 
+#if MIN_VERSION_base(4,7,0)
+import Data.Bits                (finiteBitSize, shiftL, (.|.), (.&.))
+#else
+import Data.Bits                (bitSize, shiftL, (.|.), (.&.))
+#endif
+
 import Data.ByteString.Internal
 import Data.ByteString.Unsafe
 
@@ -231,7 +237,7 @@ import Data.Maybe               (isJust, listToMaybe)
 #ifndef __NHC__
 import Control.Exception        (finally, bracket, assert, throwIO)
 #else
-import Control.Exception       (bracket, finally)
+import Control.Exception             (bracket, finally)
 #endif
 import Control.Monad            (when)
 
@@ -315,6 +321,9 @@ hWaitForInput _ _ = return ()
 unsafeDupablePerformIO = unsafePerformIO
 #endif
 
+#if !MIN_VERSION_base(4,7,0)
+finiteBitSize = bitSize
+#endif
 
 -- -----------------------------------------------------------------------------
 -- Introducing and eliminating 'ByteString's
@@ -1330,7 +1339,7 @@ isInfixOf p s = isJust (findSubstring p s)
 -- Note that calling `breakSubstring x` does some preprocessing work, so
 -- you should avoid uneccesarily duplicating breakSubstring calls with the same
 -- pattern.
-
+--
 breakSubstring :: ByteString -- ^ String to search for
                -> ByteString -- ^ String to search in
                -> (ByteString,ByteString) -- ^ Head and tail of string broken at substring
@@ -1338,27 +1347,50 @@ breakSubstring pat =
   case lp of
     0 -> \src -> (empty,src)
     1 -> breakByte (unsafeHead pat)
-    _ -> karpRabin
+    _ -> if lp * 8 <= finiteBitSize (0 :: Word)
+             then shift
+             else karpRabin
   where
-    lp          = length pat
-    k           = 2891336453 :: Word32
-    rollingHash = foldl' (\h b -> h * k + fromIntegral b) 0
-    hp          = rollingHash pat
-    m           = k ^ lp
+    unsafeSplitAt i s = (unsafeTake i s, unsafeDrop i s)
+    lp                = length pat
+    karpRabin :: ByteString -> (ByteString, ByteString)
     karpRabin src
-      | length src < lp = (src,empty)
-      | otherwise = search (rollingHash $ unsafeTake lp src) 0
+        | length src < lp = (src,empty)
+        | otherwise = search (rollingHash $ unsafeTake lp src) lp
       where
-        search !hs !n
-            | hp == hs && pat `isPrefixOf` s = (unsafeTake n src,s)
-            | length src - n <= lp           = (src,empty) -- not found
-            | otherwise                      = search hs' (n+1)
+        k           = 2891336453 :: Word32
+        rollingHash = foldl' (\h b -> h * k + fromIntegral b) 0
+        hp          = rollingHash pat
+        m           = k ^ lp
+        get = fromIntegral . unsafeIndex src
+        search !hs !i
+            | hp == hs && pat `isPrefixOf` b = u
+            | length src <= i                = (src,empty) -- not found
+            | otherwise                      = search hs' (i + 1)
           where
-            get = fromIntegral . unsafeIndex src
-            s   = unsafeDrop n src
+            u@(_, b) = unsafeSplitAt (i - lp) src
             hs' = hs * k +
-                  get (n + lp) -
-                  m * get n
+                  get i -
+                  m * get (i - lp)
+    {-# INLINE karpRabin #-}
+
+    shift :: ByteString -> (ByteString, ByteString)
+    shift !src
+        | length src < lp = (src,empty)
+        | otherwise       = search (intoWord $ unsafeTake lp src) lp
+      where
+        intoWord :: ByteString -> Word
+        intoWord = foldl' (\w b -> (w `shiftL` 8) .|. fromIntegral b) 0
+        wp   = intoWord pat
+        mask = (1 `shiftL` (8 * lp)) - 1
+        search !w !i
+            | w == wp         = unsafeSplitAt (i - lp) src
+            | length src <= i = (src, empty)
+            | otherwise       = search w' (i + 1)
+          where
+            b  = fromIntegral (unsafeIndex src i)
+            w' = mask .&. ((w `shiftL` 8) .|. b)
+    {-# INLINE shift #-}
 
 -- | Get the first index of a substring in another string,
 --   or 'Nothing' if the string is not found.
@@ -1383,13 +1415,15 @@ findSubstrings :: ByteString -- ^ String to search for.
 findSubstrings pat src
     | null pat        = [0 .. ls]
     | otherwise       = search 0
-  where lp = length pat
-        ls = length src
-        search !n
-            | (n > ls - lp) || null b = []
-            | otherwise = let k = n + length a
-                          in  k : search (k + lp)
-          where (a, b) = breakSubstring pat (unsafeDrop n src)
+  where
+    lp = length pat
+    ls = length src
+    search !n
+        | (n > ls - lp) || null b = []
+        | otherwise = let k = n + length a
+                      in  k : search (k + lp)
+      where
+        (a, b) = breakSubstring pat (unsafeDrop n src)
 
 {-# DEPRECATED findSubstrings "findSubstrings is deprecated in favour of breakSubstring." #-}
 
index 109ea9a..c1a3f1f 100644 (file)
@@ -38,6 +38,10 @@ import qualified "bytestring" Data.ByteString.Lazy as OldL
 
 import           Foreign
 
+import           Paths_bench_bytestring
+
+import           System.Random
+
 ------------------------------------------------------------------------------
 -- Benchmark support
 ------------------------------------------------------------------------------
@@ -149,7 +153,42 @@ benchIntEncodingB n0 w
       | n <= 0    = return op
       | otherwise = PI.runB w n op >>= loop (n - 1)
 
+easySubstrings, randomSubstrings :: Int -> Int -> (S.ByteString, S.ByteString)
+hardSubstrings, pathologicalSubstrings :: Int ->
+                                          Int -> (S.ByteString, S.ByteString)
+
+w :: Int -> Word8
+w = fromIntegral
+
+{-# INLINE easySubstrings #-}
+easySubstrings n h = (S.replicate n $ w 1,
+                      S.replicate h $ w 0)
 
+{-# INLINE randomSubstrings #-}
+randomSubstrings n h = (f 48278379 n, f 98403980 h)
+  where
+    next' g = let (x, g') = next g in (w x, g')
+    f g l = fst $ S.unfoldrN l (Just . next') (mkStdGen g)
+
+{-# INLINE hardSubstrings #-}
+hardSubstrings n h = (f 48278379 n, f 98403980 h)
+  where
+    next' g = let (x, g') = next g
+              in (w $ x `mod` 4, g')
+    f g l = fst $ S.unfoldrN l (Just . next') (mkStdGen g)
+
+{-# INLINE pathologicalSubstrings #-}
+pathologicalSubstrings n h =
+  (S.replicate n (w 0),
+   S.concat . replicate (h `div` n) $ S.replicate (n - 1) (w 0) `S.snoc` w 1)
+
+htmlSubstrings :: S.ByteString -> Int -> Int -> IO (S.ByteString, S.ByteString)
+htmlSubstrings s n h =
+    do i <- randomRIO (0, l - n)
+       return (S.take n . S.drop i $ s', s')
+  where
+    s' = S.take h s
+    l  = S.length s'
 
 -- benchmarks
 -------------
@@ -168,6 +207,7 @@ main :: IO ()
 main = do
   mapM_ putStrLn sanityCheckInfo
   putStrLn ""
+  wikiPage <- getDataFileName "wiki-haskell.html" >>= S.readFile
   Criterion.Main.defaultMain
     [ bgroup "Data.ByteString.Builder"
       [ bgroup "Small payload"
@@ -218,6 +258,80 @@ main = do
         ]
       ]
 
+    , bgroup "substrings"
+      [ bgroup "easy"
+        [ bench "easy1"    . nf (uncurry S.findSubstrings)
+                          $ easySubstrings 1 1000000
+        , bench "easy4"    . nf (uncurry S.findSubstrings)
+                          $ easySubstrings 4 1000000
+        , bench "easy16"   . nf (uncurry S.findSubstrings)
+                          $ easySubstrings 16 1000000
+        , bench "easy64"   . nf (uncurry S.findSubstrings)
+                          $ easySubstrings 64 1000000
+        , bench "easy128"  . nf (uncurry S.findSubstrings)
+                          $ easySubstrings 128 1000000
+        , bench "easy1024" . nf (uncurry S.findSubstrings)
+                          $ easySubstrings 1024 1000000
+        ]
+      , bgroup "random"
+        [ bench "random1"    . nf (uncurry S.findSubstrings)
+                          $ randomSubstrings 1 1000000
+        , bench "random4"    . nf (uncurry S.findSubstrings)
+                          $ randomSubstrings 4 1000000
+        , bench "random16"   . nf (uncurry S.findSubstrings)
+                          $ randomSubstrings 16 1000000
+        , bench "random64"   . nf (uncurry S.findSubstrings)
+                          $ randomSubstrings 64 1000000
+        , bench "random128"  . nf (uncurry S.findSubstrings)
+                          $ randomSubstrings 128 1000000
+        , bench "random1024" . nf (uncurry S.findSubstrings)
+                          $ randomSubstrings 1024 1000000
+
+        ]
+      , bgroup "hard"
+        [ bench "hard1"    . nf (uncurry S.findSubstrings)
+                          $ hardSubstrings 1 1000000
+        , bench "hard4"    . nf (uncurry S.findSubstrings)
+                          $ hardSubstrings 4 1000000
+        , bench "hard16"   . nf (uncurry S.findSubstrings)
+                          $ hardSubstrings 16 1000000
+        , bench "hard64"   . nf (uncurry S.findSubstrings)
+                          $ hardSubstrings 64 1000000
+        , bench "hard128"  . nf (uncurry S.findSubstrings)
+                          $ hardSubstrings 128 1000000
+        , bench "hard1024" . nf (uncurry S.findSubstrings)
+                          $ hardSubstrings 1024 1000000
+        ]
+      , bgroup "pathological"
+        [ bench "pathological1"    . nf (uncurry S.findSubstrings)
+                          $ pathologicalSubstrings 1 1000000
+        , bench "pathological4"    . nf (uncurry S.findSubstrings)
+                          $ pathologicalSubstrings 4 1000000
+        , bench "pathological16"   . nf (uncurry S.findSubstrings)
+                          $ pathologicalSubstrings 16 1000000
+        , bench "pathological64"   . nf (uncurry S.findSubstrings)
+                          $ pathologicalSubstrings 64 1000000
+        , bench "pathological128"  . nf (uncurry S.findSubstrings)
+                          $ pathologicalSubstrings 128 1000000
+        , bench "pathological1024" . nf (uncurry S.findSubstrings)
+                          $ pathologicalSubstrings 1024 1000000
+        ]
+      , bgroup "html"
+        [ bench "html1"    . nfIO . fmap (uncurry S.findSubstrings)
+                          $ htmlSubstrings wikiPage 1 1000000
+        , bench "html4"    . nfIO . fmap (uncurry S.findSubstrings)
+                          $ htmlSubstrings wikiPage 4 1000000
+        , bench "html16"   . nfIO . fmap (uncurry S.findSubstrings)
+                          $ htmlSubstrings wikiPage 16 1000000
+        , bench "html64"   . nfIO . fmap (uncurry S.findSubstrings)
+                          $ htmlSubstrings wikiPage 64 1000000
+        , bench "html128"  . nfIO . fmap (uncurry S.findSubstrings)
+                          $ htmlSubstrings wikiPage 128 1000000
+        , bench "html1024" . nfIO . fmap (uncurry S.findSubstrings)
+                          $ htmlSubstrings wikiPage 1024 1000000
+        ]
+      ]
+
     , bgroup "Data.ByteString.Builder.Prim"
       [ benchFE "char7"      $ toEnum       >$< P.char7
       , benchFE "char8"      $ toEnum       >$< P.char8
index 6421301..71cc99f 100644 (file)
@@ -21,6 +21,8 @@ Tested-With:         GHC==7.0.3
 Build-Type:          Simple
 Cabal-Version:       >= 1.10
 
+data-files:          wiki-haskell.html
+
 source-repository head
   type:     darcs
   location: http://darcs.haskell.org/bytestring/
@@ -42,6 +44,7 @@ executable bench-bytestring-builder
                    -- we require bytestring due to benchmarking against
                    -- blaze-textual, which uses blaze-builder
                    , bytestring    >= 0.9
+                   , random
 
   -- cabal complains about ../ dirs. However, this is better than symlinks,
   -- which probably don't work on windows.
diff --git a/bench/wiki-haskell.html b/bench/wiki-haskell.html
new file mode 100644 (file)
index 0000000..566df83
--- /dev/null
@@ -0,0 +1,674 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr" class="client-nojs">
+<head>
+<meta charset="UTF-8" />
+<title>Haskell (programming language) - Wikipedia, the free encyclopedia</title>
+<script>document.documentElement.className = document.documentElement.className.replace( /(^|\s)client-nojs(\s|$)/, "$1client-js$2" );</script>
+<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {
+mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":!1,"wgNamespaceNumber":0,"wgPageName":"Haskell_(programming_language)","wgTitle":"Haskell (programming language)","wgCurRevisionId":682574392,"wgRevisionId":682574392,"wgArticleId":27404990,"wgIsArticle":!0,"wgIsRedirect":!1,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["CS1 errors: dates","Wikipedia introduction cleanup from April 2015","All pages needing cleanup","Articles covered by WikiProject Wikify from April 2015","All articles covered by WikiProject Wikify","All articles with unsourced statements","Articles with unsourced statements from February 2012","Articles with unsourced statements from April 2009","Wikipedia external links cleanup from December 2014","Wikipedia spam cleanup from December 2014","Articles with DMOZ links","Articles with inconsistent citation formats","Use dmy dates from March 2012","Haskell programming language family","Academic programming languages",
+"Educational programming languages","Functional languages","1990 in computer science","Programming languages created in 1990","Articles with example Haskell code","Pattern matching programming languages","Literate programming","Statically typed programming languages"],"wgBreakFrames":!1,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"Haskell_(programming_language)","wgRelevantArticleId":27404990,"wgIsProbablyEditable":!0,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgMediaViewerOnClick":!0,"wgMediaViewerEnabledByDefault":!0,"wikilove-recipient":"","wikilove-anon":0,"wgWikiEditorEnabledModules":{"toolbar":!0,"dialogs":!0
+,"preview":!1,"publish":!1},"wgBetaFeaturesFeatures":[],"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","usePageImages":!0,"usePageDescriptions":!0},"wgGatherShouldShowTutorial":!0,"wgGatherEnableSample":0,"wgGatherPageImageThumbnail":"//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Haskell-Logo.svg/100px-Haskell-Logo.svg.png","wgULSAcceptLanguageList":["en-us","en"],"wgULSCurrentAutonym":"English","wgFlaggedRevsParams":{"tags":{"status":{"levels":1,"quality":2,"pristine":3}}},"wgStableRevisionId":null,"wgCategoryTreePageCategoryOptions":"{\"mode\":0,\"hideprefix\":20,\"showcount\":true,\"namespaces\":false}","wgNoticeProject":"wikipedia","wgWikibaseItemId":"Q34010","wgVisualEditorToolbarScrollOffset":0});mw.loader.implement("user.options",function($,jQuery){mw.user.options.set({"variant":"en"});});mw.loader.implement("user.tokens",function($,jQuery){mw.user.tokens.set({"editToken":"+\\","patrolToken":"+\\","watchToken":"+\\"});});mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","ext.centralauth.centralautologin","mmv.head","ext.gadget.WatchlistBase","ext.gadget.WatchlistGreenIndicators","ext.visualEditor.desktopArticleTarget.init","ext.uls.init","ext.uls.interface","ext.centralNotice.bannerController","skins.vector.js"]);
+} );</script>
+<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=ext.gadget.WatchlistBase%2CWatchlistGreenIndicators%7Cext.pygments%7Cext.uls.nojs%7Cext.visualEditor.desktopArticleTarget.noscript%7Cmediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.sectionAnchor%7Cmediawiki.skinning.interface%7Cskins.vector.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector" />
+<meta name="ResourceLoaderDynamicStyles" content="" />
+<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=site&amp;only=styles&amp;skin=vector" />
+<style>a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}</style>
+<script async="" src="/w/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=vector"></script>
+<meta name="generator" content="MediaWiki 1.26wmf24" />
+<link rel="alternate" href="android-app://org.wikipedia/http/en.m.wikipedia.org/wiki/Haskell_(programming_language)" />
+<link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit" />
+<link rel="edit" title="Edit this page" href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit" />
+<link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png" />
+<link rel="shortcut icon" href="/static/favicon/wikipedia.ico" />
+<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Wikipedia (en)" />
+<link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd" />
+<link rel="copyright" href="//creativecommons.org/licenses/by-sa/3.0/" />
+<link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom" />
+<link rel="canonical" href="https://en.wikipedia.org/wiki/Haskell_(programming_language)" />
+<link rel="dns-prefetch" href="//meta.wikimedia.org" />
+<!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/static/1.26wmf24/skins/Vector/csshover.min.htc")}</style><![endif]-->
+</head>
+<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Haskell_programming_language skin-vector action-view">
+    <div id="mw-page-base" class="noprint"></div>
+    <div id="mw-head-base" class="noprint"></div>
+    <div id="content" class="mw-body" role="main">
+      <a id="top"></a>
+
+              <div id="siteNotice"><!-- CentralNotice --></div>
+            <div class="mw-indicators">
+</div>
+      <h1 id="firstHeading" class="firstHeading" lang="en">Haskell (programming language)</h1>
+                  <div id="bodyContent" class="mw-body-content">
+                  <div id="siteSub">From Wikipedia, the free encyclopedia</div>
+                <div id="contentSub"></div>
+                        <div id="jump-to-nav" class="mw-jump">
+          Jump to:          <a href="#mw-head">navigation</a>,          <a href="#p-search">search</a>
+        </div>
+        <div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><table class="metadata plainlinks ambox ambox-style ambox-lead_too_short" role="presentation">
+<tr>
+<td class="mbox-image">
+<div style="width:52px"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/40px-Edit-clear.svg.png" width="40" height="40" srcset="//upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/60px-Edit-clear.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/80px-Edit-clear.svg.png 2x" data-file-width="48" data-file-height="48" /></div>
+</td>
+<td class="mbox-text"><span class="mbox-text-span">This article's <b><a href="/wiki/Wikipedia:Manual_of_Style/Lead_section" title="Wikipedia:Manual of Style/Lead section">lead section</a> may not adequately <a href="/wiki/Wikipedia:Summary_style" title="Wikipedia:Summary style">summarize</a> key points of its contents</b>. <span class="hide-when-compact">Please consider expanding the lead to <a href="/wiki/Wikipedia:Manual_of_Style/Lead_section#Provide_an_accessible_overview" title="Wikipedia:Manual of Style/Lead section">provide an accessible overview</a> of all important aspects of the article.</span> <small><i>(April 2015)</i></small></span></td>
+</tr>
+</table>
+<table class="infobox vevent" style="width:22em">
+<caption class="summary">Haskell</caption>
+<tr>
+<td colspan="2" style="text-align:center"><a href="/wiki/File:Haskell-Logo.svg" class="image" title="Logo of Haskell"><img alt="Logo of Haskell" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Haskell-Logo.svg/120px-Haskell-Logo.svg.png" width="120" height="85" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Haskell-Logo.svg/180px-Haskell-Logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Haskell-Logo.svg/240px-Haskell-Logo.svg.png 2x" data-file-width="602" data-file-height="425" /></a></td>
+</tr>
+<tr>
+<th scope="row"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Paradigm</a></th>
+<td><a href="/wiki/Functional_programming" title="Functional programming">functional</a>, <a href="/wiki/Lazy_evaluation" title="Lazy evaluation">lazy</a>/<a href="/wiki/Non-strict_programming_language" title="Non-strict programming language" class="mw-redirect">non-strict</a>, <a href="/wiki/Modular_programming" title="Modular programming">modular</a></td>
+</tr>
+<tr>
+<th scope="row"><a href="/wiki/Software_design" title="Software design">Designed&#160;by</a></th>
+<td><a href="/wiki/Lennart_Augustsson" title="Lennart Augustsson">Lennart Augustsson</a>, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, <a href="/wiki/Paul_Hudak" title="Paul Hudak">Paul Hudak</a>, <a href="/wiki/John_Hughes_(computer_scientist)" title="John Hughes (computer scientist)">John Hughes</a>, Thomas Johnsson, Mark Jones, <a href="/wiki/Simon_Peyton_Jones" title="Simon Peyton Jones">Simon Peyton Jones</a>, John Launchbury, <a href="/wiki/Erik_Meijer_(computer_scientist)" title="Erik Meijer (computer scientist)">Erik Meijer</a>, John Peterson, Alastair Reid, Colin Runciman, <a href="/wiki/Philip_Wadler" title="Philip Wadler">Philip Wadler</a></td>
+</tr>
+<tr>
+<th scope="row">First&#160;appeared</th>
+<td>1990<span class="noprint">; 25&#160;years ago</span><span style="display:none">&#160;(<span class="bday dtstart published updated">1990</span>)</span></td>
+</tr>
+<tr>
+<th scope="row"><a href="/wiki/Software_release_life_cycle" title="Software release life cycle">Stable release</a></th>
+<td>Haskell 2010<sup id="cite_ref-2010ann_1-0" class="reference"><a href="#cite_note-2010ann-1"><span>[</span>1<span>]</span></a></sup> / July&#160;2010<span class="noprint">; 5&#160;years ago</span><span style="display:none">&#160;(<span class="bday dtstart published updated">2010-07</span>)</span></td>
+</tr>
+<tr>
+<th scope="row"><a href="/wiki/Software_release_life_cycle" title="Software release life cycle">Preview release</a></th>
+<td>Announced as Haskell 2014<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span>[</span>2<span>]</span></a></sup></td>
+</tr>
+<tr>
+<th scope="row"><a href="/wiki/Type_system" title="Type system">Typing discipline</a></th>
+<td><a href="/wiki/Static_typing" title="Static typing" class="mw-redirect">static</a>, <a href="/wiki/Strong_typing" title="Strong typing" class="mw-redirect">strong</a>, <a href="/wiki/Type_inference" title="Type inference">inferred</a></td>
+</tr>
+<tr>
+<th scope="row"><a href="/wiki/Operating_system" title="Operating system">OS</a></th>
+<td><a href="/wiki/Cross-platform" title="Cross-platform">Cross-platform</a></td>
+</tr>
+<tr>
+<th scope="row"><a href="/wiki/Filename_extension" title="Filename extension">Filename extensions</a></th>
+<td><code>.hs</code>, <code>.lhs</code></td>
+</tr>
+<tr>
+<th scope="row">Website</th>
+<td><span class="url"><a rel="nofollow" class="external text" href="http://haskell.org">haskell<wbr />.org</a></span></td>
+</tr>
+<tr>
+<th colspan="2" style="text-align:center;background-color: #eee;">Major <a href="/wiki/Programming_language_implementation" title="Programming language implementation">implementations</a></th>
+</tr>
+<tr>
+<td colspan="2" style="text-align:center"><a href="/wiki/Glasgow_Haskell_Compiler" title="Glasgow Haskell Compiler">GHC</a>, <a href="/wiki/Hugs" title="Hugs">Hugs</a>, NHC, JHC, <a href="/wiki/Yhc" title="Yhc">Yhc</a>, UHC</td>
+</tr>
+<tr>
+<th colspan="2" style="text-align:center;background-color: #eee;"><a href="/wiki/Dialect_(computing)" title="Dialect (computing)">Dialects</a></th>
+</tr>
+<tr>
+<td colspan="2" style="text-align:center"><a href="/wiki/Helium_(Haskell)" title="Helium (Haskell)">Helium</a>, <a href="/wiki/Gofer_(software)" title="Gofer (software)" class="mw-redirect">Gofer</a></td>
+</tr>
+<tr>
+<th colspan="2" style="text-align:center;background-color: #eee;">Influenced by</th>
+</tr>
+<tr>
+<td colspan="2" style="text-align:center"><a href="/wiki/Clean_(programming_language)" title="Clean (programming language)">Clean</a>,<sup id="cite_ref-haskell-report-influences_3-0" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/FP_(programming_language)" title="FP (programming language)">FP</a>,<sup id="cite_ref-haskell-report-influences_3-1" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Gofer_(programming_language)" title="Gofer (programming language)">Gofer</a>,<sup id="cite_ref-haskell-report-influences_3-2" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Hope_(programming_language)" title="Hope (programming language)">Hope</a> and Hope<sup>+</sup>,<sup id="cite_ref-haskell-report-influences_3-3" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Id_(programming_language)" title="Id (programming language)">Id</a>,<sup id="cite_ref-haskell-report-influences_3-4" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/ISWIM" title="ISWIM">ISWIM</a>,<sup id="cite_ref-haskell-report-influences_3-5" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Kent_Recursive_Calculator" title="Kent Recursive Calculator">KRC</a>,<sup id="cite_ref-haskell-report-influences_3-6" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Lisp_(programming_language)" title="Lisp (programming language)">Lisp</a>,<sup id="cite_ref-haskell-report-influences_3-7" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Miranda_(programming_language)" title="Miranda (programming language)">Miranda</a>,<sup id="cite_ref-haskell-report-influences_3-8" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/ML_(programming_language)" title="ML (programming language)">ML</a> and <a href="/wiki/Standard_ML" title="Standard ML">Standard ML</a>,<sup id="cite_ref-haskell-report-influences_3-9" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Orwell_(programming_language)" title="Orwell (programming language)">Orwell</a>, <a href="/wiki/SASL_(programming_language)" title="SASL (programming language)">SASL</a>,<sup id="cite_ref-haskell-report-influences_3-10" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/SISAL" title="SISAL">SISAL</a>,<sup id="cite_ref-haskell-report-influences_3-11" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup> <a href="/wiki/Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a><sup id="cite_ref-haskell-report-influences_3-12" class="reference"><a href="#cite_note-haskell-report-influences-3"><span>[</span>3<span>]</span></a></sup></td>
+</tr>
+<tr>
+<th colspan="2" style="text-align:center;background-color: #eee;">Influenced</th>
+</tr>
+<tr>
+<td colspan="2" style="text-align:center">
+<p><a href="/wiki/Agda_(theorem_prover)" title="Agda (theorem prover)" class="mw-redirect">Agda</a>,<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span>[</span>4<span>]</span></a></sup> <a href="/wiki/Bluespec,_Inc." title="Bluespec, Inc.">Bluespec</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-38.2C43_5-0" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-38.2C43-5"><span>[</span>5<span>]</span></a></sup> <a href="/wiki/C%2B%2B11" title="C++11">C++11</a>/<a href="/wiki/Concepts_(C%2B%2B)" title="Concepts (C++)">Concepts</a>,<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span>[</span>6<span>]</span></a></sup> <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>/<a href="/wiki/Language_Integrated_Query" title="Language Integrated Query">LINQ</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-0" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup><sup id="cite_ref-meijer2012_8-0" class="reference"><a href="#cite_note-meijer2012-8"><span>[</span>8<span>]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span>[</span>9<span>]</span></a></sup><sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span>[</span>10<span>]</span></a></sup> <a href="/wiki/CAL_(Quark_Framework)" title="CAL (Quark Framework)" class="mw-redirect">CAL</a>,<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2012)">citation needed</span></a></i>]</sup> <a href="/wiki/Cayenne_(programming_language)" title="Cayenne (programming language)">Cayenne</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-1" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup> <a href="/wiki/Clean_(programming_language)" title="Clean (programming language)">Clean</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-2" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup> <a href="/wiki/Clojure" title="Clojure">Clojure</a>,<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span>[</span>11<span>]</span></a></sup> <a href="/wiki/CoffeeScript" title="CoffeeScript">CoffeeScript</a>,<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span>[</span>12<span>]</span></a></sup> <a href="/wiki/Curry_(programming_language)" title="Curry (programming language)">Curry</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-3" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup> <a href="/wiki/Elm_(programming_language)" title="Elm (programming language)">Elm</a>, <a href="/wiki/Epigram_(programming_language)" title="Epigram (programming language)">Epigram</a>,<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2012)">citation needed</span></a></i>]</sup> <a href="/wiki/Escher_(programming_language)" title="Escher (programming language)">Escher</a>,<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2012)">citation needed</span></a></i>]</sup> <a href="/wiki/F_Sharp_(programming_language)" title="F Sharp (programming language)">F#</a>,<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span>[</span>13<span>]</span></a></sup> <a href="/wiki/Frege_(programming_language)" title="Frege (programming language)">Frege</a>,<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span>[</span>14<span>]</span></a></sup> <a href="/wiki/Idris_(programming_language)" title="Idris (programming language)">Idris</a>,<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span>[</span>15<span>]</span></a></sup> <a href="/wiki/Isabelle_theorem_prover" title="Isabelle theorem prover" class="mw-redirect">Isabelle</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-4" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup> <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>/<a href="/wiki/Generics_in_Java" title="Generics in Java">Generics</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-5" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup> Kaya, <sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span>[</span>16<span>]</span></a></sup> <a href="/wiki/LiveScript" title="LiveScript">LiveScript</a>, <sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span>[</span>17<span>]</span></a></sup></p>
+<a href="/wiki/Mercury_(programming_language)" title="Mercury (programming language)">Mercury</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-6" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup> <a href="/wiki/%CE%A9mega_interpreter" title="Ωmega interpreter" class="mw-redirect">Omega</a>,<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2012)">citation needed</span></a></i>]</sup> <a href="/wiki/Perl_6" title="Perl 6">Perl 6</a>,<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span>[</span>18<span>]</span></a></sup> <a href="/wiki/Python_(programming_language)" title="Python (programming language)">Python</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-7" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup><sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span>[</span>19<span>]</span></a></sup> <a href="/wiki/Scala_(programming_language)" title="Scala (programming language)">Scala</a>,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-8" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span>[</span>20<span>]</span></a></sup> <a href="/wiki/Swift_(Apple_programming_language)" title="Swift (Apple programming language)" class="mw-redirect">Swift</a>,<sup id="cite_ref-lattner2014_21-0" class="reference"><a href="#cite_note-lattner2014-21"><span>[</span>21<span>]</span></a></sup> <a href="/wiki/Timber_(programming_language)" title="Timber (programming language)">Timber</a>,<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (February 2012)">citation needed</span></a></i>]</sup> <a href="/wiki/Visual_Basic_.NET" title="Visual Basic .NET">Visual Basic 9.0</a><sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-9" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span>[</span>7<span>]</span></a></sup><sup id="cite_ref-meijer2012_8-1" class="reference"><a href="#cite_note-meijer2012-8"><span>[</span>8<span>]</span></a></sup></td>
+</tr>
+</table>
+<p><b>Haskell</b> <span class="nowrap"><span class="IPA nopopups"><a href="/wiki/Help:IPA_for_English" title="Help:IPA for English">/<span style="border-bottom:1px dotted"><span title="/ˈ/ primary stress follows">ˈ</span><span title="'h' in 'hi'">h</span><span title="/æ/ short 'a' in 'bad'">æ</span><span title="'s' in 'sigh'">s</span><span title="'k' in 'kind'">k</span><span title="/əl/ 'le' in 'bottle'">əl</span></span>/</a></span></span><sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span>[</span>22<span>]</span></a></sup> is a standardized, <a href="/wiki/General-purpose_programming_language" title="General-purpose programming language">general-purpose</a> <a href="/wiki/Purely_functional" title="Purely functional">purely</a> <a href="/wiki/Functional_programming" title="Functional programming">functional programming</a> <a href="/wiki/Programming_language" title="Programming language">language</a>, with <a href="/wiki/Non-strict_semantics" title="Non-strict semantics" class="mw-redirect">non-strict semantics</a> and <a href="/wiki/Strong_typing" title="Strong typing" class="mw-redirect">strong</a> <a href="/wiki/Static_typing" title="Static typing" class="mw-redirect">static typing</a>.<sup id="cite_ref-FOOTNOTEPeyton_Jones2003_23-0" class="reference"><a href="#cite_note-FOOTNOTEPeyton_Jones2003-23"><span>[</span>23<span>]</span></a></sup> It is named after <a href="/wiki/Logician" title="Logician" class="mw-redirect">logician</a> <a href="/wiki/Haskell_Curry" title="Haskell Curry">Haskell Curry</a>.<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler2007_24-0" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler2007-24"><span>[</span>24<span>]</span></a></sup></p>
+<p></p>
+<div id="toc" class="toc">
+<div id="toctitle">
+<h2>Contents</h2>
+</div>
+<ul>
+<li class="toclevel-1 tocsection-1"><a href="#History"><span class="tocnumber">1</span> <span class="toctext">History</span></a>
+<ul>
+<li class="toclevel-2 tocsection-2"><a href="#Haskell_1.0_to_1.4"><span class="tocnumber">1.1</span> <span class="toctext">Haskell 1.0 to 1.4</span></a></li>
+<li class="toclevel-2 tocsection-3"><a href="#Haskell_98"><span class="tocnumber">1.2</span> <span class="toctext">Haskell 98</span></a></li>
+<li class="toclevel-2 tocsection-4"><a href="#Haskell_Prime"><span class="tocnumber">1.3</span> <span class="toctext">Haskell Prime</span></a></li>
+<li class="toclevel-2 tocsection-5"><a href="#Haskell_2010"><span class="tocnumber">1.4</span> <span class="toctext">Haskell 2010</span></a></li>
+</ul>
+</li>
+<li class="toclevel-1 tocsection-6"><a href="#Features"><span class="tocnumber">2</span> <span class="toctext">Features</span></a></li>
+<li class="toclevel-1 tocsection-7"><a href="#Code_examples"><span class="tocnumber">3</span> <span class="toctext">Code examples</span></a></li>
+<li class="toclevel-1 tocsection-8"><a href="#Implementations"><span class="tocnumber">4</span> <span class="toctext">Implementations</span></a></li>
+<li class="toclevel-1 tocsection-9"><a href="#Applications"><span class="tocnumber">5</span> <span class="toctext">Applications</span></a></li>
+<li class="toclevel-1 tocsection-10"><a href="#Industry"><span class="tocnumber">6</span> <span class="toctext">Industry</span></a></li>
+<li class="toclevel-1 tocsection-11"><a href="#Web"><span class="tocnumber">7</span> <span class="toctext">Web</span></a></li>
+<li class="toclevel-1 tocsection-12"><a href="#Related_languages"><span class="tocnumber">8</span> <span class="toctext">Related languages</span></a></li>
+<li class="toclevel-1 tocsection-13"><a href="#Criticism"><span class="tocnumber">9</span> <span class="toctext">Criticism</span></a></li>
+<li class="toclevel-1 tocsection-14"><a href="#Conferences_and_workshops"><span class="tocnumber">10</span> <span class="toctext">Conferences and workshops</span></a></li>
+<li class="toclevel-1 tocsection-15"><a href="#References"><span class="tocnumber">11</span> <span class="toctext">References</span></a></li>
+<li class="toclevel-1 tocsection-16"><a href="#Further_reading"><span class="tocnumber">12</span> <span class="toctext">Further reading</span></a></li>
+<li class="toclevel-1 tocsection-17"><a href="#External_links"><span class="tocnumber">13</span> <span class="toctext">External links</span></a></li>
+</ul>
+</div>
+<p></p>
+<h2><span class="mw-headline" id="History">History</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=1" title="Edit section: History">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p>Following the release of <a href="/wiki/Miranda_(programming_language)" title="Miranda (programming language)">Miranda</a> by Research Software Ltd, in 1985, interest in <a href="/wiki/Lazy_evaluation" title="Lazy evaluation">lazy functional languages</a> grew: by 1987, more than a dozen <a href="/wiki/Non-strict" title="Non-strict" class="mw-redirect">non-strict</a>, purely functional programming languages existed. Of these, Miranda was the most widely used, but was <a href="/wiki/Proprietary_software" title="Proprietary software">proprietary software</a>. At the conference on <a href="/wiki/Functional_Programming_Languages_and_Computer_Architecture" title="Functional Programming Languages and Computer Architecture" class="mw-redirect">Functional Programming Languages and Computer Architecture</a> (FPCA '87) in <a href="/wiki/Portland,_Oregon" title="Portland, Oregon">Portland, Oregon</a>, a meeting was held during which participants formed a strong consensus that a committee should be formed to define an <a href="/wiki/Open_standard" title="Open standard">open standard</a> for such languages. The committee's purpose was to consolidate the existing <a href="/wiki/Functional_languages" title="Functional languages" class="mw-redirect">functional languages</a> into a common one that would serve as a basis for future research in functional-language design.<sup id="cite_ref-FOOTNOTEPeyton_Jones2003Preface_25-0" class="reference"><a href="#cite_note-FOOTNOTEPeyton_Jones2003Preface-25"><span>[</span>25<span>]</span></a></sup></p>
+<h3><span class="mw-headline" id="Haskell_1.0_to_1.4">Haskell 1.0 to 1.4</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=2" title="Edit section: Haskell 1.0 to 1.4">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
+<p>The first version of Haskell ("Haskell 1.0") was defined in 1990.<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler2007_24-1" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler2007-24"><span>[</span>24<span>]</span></a></sup> The committee's efforts resulted in a series of language definitions (1.0, 1.1, 1.2, 1.3, 1.4).</p>
+<h3><span class="mw-headline" id="Haskell_98">Haskell 98</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=3" title="Edit section: Haskell 98">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
+<p>In late 1997, the series culminated in <b>Haskell 98</b>, intended to specify a stable, minimal, portable version of the language and an accompanying standard <a href="/wiki/Library_(computer_science)" title="Library (computer science)" class="mw-redirect">library</a> for teaching, and as a base for future extensions. The committee expressly welcomed the creation of extensions and variants of Haskell 98 via adding and incorporating experimental features.<sup id="cite_ref-FOOTNOTEPeyton_Jones2003Preface_25-1" class="reference"><a href="#cite_note-FOOTNOTEPeyton_Jones2003Preface-25"><span>[</span>25<span>]</span></a></sup></p>
+<p>In February 1999, the Haskell 98 language standard was originally published as "The Haskell 98 Report".<sup id="cite_ref-FOOTNOTEPeyton_Jones2003Preface_25-2" class="reference"><a href="#cite_note-FOOTNOTEPeyton_Jones2003Preface-25"><span>[</span>25<span>]</span></a></sup> In January 2003, a revised version was published as "Haskell 98 Language and Libraries: The Revised Report".<sup id="cite_ref-FOOTNOTEPeyton_Jones2003_23-1" class="reference"><a href="#cite_note-FOOTNOTEPeyton_Jones2003-23"><span>[</span>23<span>]</span></a></sup> The language continues to evolve rapidly, with the <a href="/wiki/Glasgow_Haskell_Compiler" title="Glasgow Haskell Compiler">Glasgow Haskell Compiler</a> (GHC) implementation representing the current <i>de facto</i> standard.<sup id="cite_ref-HaskellWikiImpl_26-0" class="reference"><a href="#cite_note-HaskellWikiImpl-26"><span>[</span>26<span>]</span></a></sup></p>
+<h3><span class="mw-headline" id="Haskell_Prime">Haskell Prime</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=4" title="Edit section: Haskell Prime">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
+<p>In early 2006, the process of defining a successor to the Haskell 98 standard, informally named <b>Haskell Prime</b>, began.<sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span>[</span>27<span>]</span></a></sup> This is an ongoing incremental process to revise the language definition, producing a new revision up to once per year. The first revision, named <b>Haskell 2010</b>, was announced in November 2009<sup id="cite_ref-2010ann_1-1" class="reference"><a href="#cite_note-2010ann-1"><span>[</span>1<span>]</span></a></sup> and published in July 2010.</p>
+<h3><span class="mw-headline" id="Haskell_2010">Haskell 2010</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=5" title="Edit section: Haskell 2010">edit</a><span class="mw-editsection-bracket">]</span></span></h3>
+<p>Haskell 2010 adds the <a href="/wiki/Foreign_function_interface" title="Foreign function interface">foreign function interface</a> (FFI) to Haskell, allowing for bindings to other programming languages, fixes some <a href="/wiki/Syntax_(programming_languages)" title="Syntax (programming languages)">syntax</a> issues (changes in the formal grammar) and bans so-called "n-plus-k-patterns", that is, definitions of the form <code>fact (n+1) = (n+1) * fact n</code> are no longer allowed. It introduces the Language-Pragma-Syntax-Extension which allows for designating a Haskell source as Haskell 2010 or requiring certain extensions to the Haskell language. The names of the extensions introduced in Haskell 2010 are DoAndIfThenElse, HierarchicalModules, EmptyDataDeclarations, FixityResolution, ForeignFunctionInterface, LineCommentSyntax, PatternGuards, RelaxedDependencyAnalysis, LanguagePragma and NoNPlusKPatterns.<sup id="cite_ref-2010ann_1-2" class="reference"><a href="#cite_note-2010ann-1"><span>[</span>1<span>]</span></a></sup></p>
+<h2><span class="mw-headline" id="Features">Features</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=6" title="Edit section: Features">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<div class="hatnote relarticle mainarticle">Main article: <a href="/wiki/Haskell_features" title="Haskell features" class="mw-redirect">Haskell features</a></div>
+<div class="hatnote">See also: <a href="/wiki/Glasgow_Haskell_Compiler#Extensions_to_Haskell" title="Glasgow Haskell Compiler">Glasgow Haskell Compiler § Extensions to Haskell</a></div>
+<p>Haskell features <a href="/wiki/Lazy_evaluation" title="Lazy evaluation">lazy evaluation</a>, <a href="/wiki/Pattern_matching" title="Pattern matching">pattern matching</a>, <a href="/wiki/List_comprehension" title="List comprehension">list comprehension</a>, <a href="/wiki/Type_class" title="Type class">type classes</a>, and <a href="/wiki/Type_polymorphism" title="Type polymorphism" class="mw-redirect">type polymorphism</a>. It is a <a href="/wiki/Purely_functional" title="Purely functional">purely functional</a> language, which means that in general, functions in Haskell do not have <a href="/wiki/Side_effect_(computer_science)" title="Side effect (computer science)">side effects</a>. There is a distinct construct for representing side effects, <a href="/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 <a href="/wiki/Pure_function#Impure_functions" title="Pure function">impure functions</a> of other languages.</p>
+<p>Haskell has a <a href="/wiki/Strongly_typed_programming_language" title="Strongly typed programming language" class="mw-redirect">strong</a>, <a href="/wiki/Static_type#Static_typing" title="Static type" class="mw-redirect">static</a> type system based on <a href="/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 type classes, which were originally conceived as a principled way to add <a href="/wiki/Polymorphism_(computer_science)" title="Polymorphism (computer science)">overloading</a> to the language,<sup id="cite_ref-wadler89_28-0" class="reference"><a href="#cite_note-wadler89-28"><span>[</span>28<span>]</span></a></sup> but have since found many more uses.<sup id="cite_ref-hallgren01_29-0" class="reference"><a href="#cite_note-hallgren01-29"><span>[</span>29<span>]</span></a></sup></p>
+<p>The construct which represents side effects is an example of a <a href="/wiki/Monad_(functional_programming)" title="Monad (functional programming)">monad</a>. Monads are a general framework which can model different kinds of computation, including error handling, <a href="/wiki/Nondeterministic_algorithm" title="Nondeterministic algorithm">nondeterminism</a>, <a href="/wiki/Parsing" title="Parsing">parsing</a>, and <a href="/wiki/Software_transactional_memory" title="Software transactional memory">software transactional memory</a>. Monads are defined as ordinary datatypes, but Haskell provides some <a href="/wiki/Syntactic_sugar" title="Syntactic sugar">syntactic sugar</a> for their use.</p>
+<p>The language has an open, published specification,<sup id="cite_ref-FOOTNOTEPeyton_Jones2003_23-2" class="reference"><a href="#cite_note-FOOTNOTEPeyton_Jones2003-23"><span>[</span>23<span>]</span></a></sup> and <a href="#Implementations">multiple implementations exist</a>. The main implementation of Haskell, <a href="/wiki/Glasgow_Haskell_Compiler" title="Glasgow Haskell Compiler">GHC</a>, is both an <a href="/wiki/Interpreter_(computing)" title="Interpreter (computing)">interpreter</a> and <a href="/wiki/Machine_code" title="Machine code">native-code</a> <a href="/wiki/Compiler" title="Compiler">compiler</a> that runs on most platforms. GHC is noted for its high-performance implementation of <a href="/wiki/Concurrency_(computer_science)" title="Concurrency (computer science)">concurrency</a> and <a href="/wiki/Parallel_computing" title="Parallel computing">parallelism</a>,<sup id="cite_ref-shootout_30-0" class="reference"><a href="#cite_note-shootout-30"><span>[</span>30<span>]</span></a></sup> and for having a rich type system incorporating recent innovations such as <a href="/wiki/Generalized_algebraic_data_type" title="Generalized algebraic data type">generalized algebraic data types</a> and type families.</p>
+<p>There is an active community around the language, and more than 5400 third-party open-source libraries and tools are available in the online package repository Hackage.<sup id="cite_ref-hackage-stats_31-0" class="reference"><a href="#cite_note-hackage-stats-31"><span>[</span>31<span>]</span></a></sup></p>
+<h2><span class="mw-headline" id="Code_examples">Code examples</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=7" title="Edit section: Code examples">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<div class="hatnote">See also: <a href="/wiki/Haskell_98_features#Examples" title="Haskell 98 features">Haskell 98 features § Examples</a></div>
+<p>The following is a <a href="/wiki/Hello_world_program" title="Hello world program" class="mw-redirect">Hello world program</a> written in Haskell (note that all but the last line can be omitted):</p>
+<div class="mw-highlight mw-content-ltr" dir="ltr">
+<pre>
+<span class="kr">module</span> <span class="nn">Main</span> <span class="kr">where</span>
+
+<span class="nf">main</span> <span class="ow">::</span> <span class="kt">IO</span> <span class="nb">()</span>
+<span class="nf">main</span> <span class="ow">=</span> <span class="n">putStrLn</span> <span class="s">"Hello, World!"</span>
+</pre></div>
+<p>Here is the <a href="/wiki/Factorial" title="Factorial">factorial</a> function in Haskell, defined in a few different ways:</p>
+<div class="mw-highlight mw-content-ltr" dir="ltr">
+<pre>
+<span class="c1">-- Type annotation (optional)</span>
+<span class="nf">factorial</span> <span class="ow">::</span> <span class="p">(</span><span class="kt">Integral</span> <span class="n">a</span><span class="p">)</span> <span class="ow">=&gt;</span> <span class="n">a</span> <span class="ow">-&gt;</span> <span class="n">a</span>
+
+<span class="c1">-- Using recursion</span>
+<span class="nf">factorial</span> <span class="n">n</span> <span class="o">|</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">2</span> <span class="ow">=</span> <span class="mi">1</span>
+<span class="nf">factorial</span> <span class="n">n</span> <span class="ow">=</span> <span class="n">n</span> <span class="o">*</span> <span class="n">factorial</span> <span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
+
+<span class="c1">-- Using recursion, with guards</span>
+<span class="nf">factorial</span> <span class="n">n</span>
+  <span class="o">|</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">2</span>     <span class="ow">=</span> <span class="mi">1</span>
+  <span class="o">|</span> <span class="n">otherwise</span> <span class="ow">=</span> <span class="n">n</span> <span class="o">*</span> <span class="n">factorial</span> <span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
+
+<span class="c1">-- Using recursion but written without pattern matching</span>
+<span class="nf">factorial</span> <span class="n">n</span> <span class="ow">=</span> <span class="kr">if</span> <span class="n">n</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="kr">then</span> <span class="n">n</span> <span class="o">*</span> <span class="n">factorial</span> <span class="p">(</span><span class="n">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="kr">else</span> <span class="mi">1</span>
+
+<span class="c1">-- Using a list</span>
+<span class="nf">factorial</span> <span class="n">n</span> <span class="ow">=</span> <span class="n">product</span> <span class="p">[</span><span class="mi">1</span><span class="o">..</span><span class="n">n</span><span class="p">]</span>
+
+<span class="c1">-- Using fold (implements product)</span>
+<span class="nf">factorial</span> <span class="n">n</span> <span class="ow">=</span> <span class="n">foldl</span> <span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="mi">1</span> <span class="p">[</span><span class="mi">1</span><span class="o">..</span><span class="n">n</span><span class="p">]</span>
+
+<span class="c1">-- Point-free style</span>
+<span class="nf">factorial</span> <span class="ow">=</span> <span class="n">foldr</span> <span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="mi">1</span> <span class="o">.</span> <span class="n">enumFromTo</span> <span class="mi">1</span>
+</pre></div>
+<p>An efficient implementation of the <a href="/wiki/Fibonacci_numbers" title="Fibonacci numbers" class="mw-redirect">Fibonacci numbers</a>, as an <a href="/wiki/Infinite_list" title="Infinite list" class="mw-redirect">infinite list</a>, is this:</p>
+<div class="mw-highlight mw-content-ltr" dir="ltr">
+<pre>
+<span class="c1">-- Type annotation (optional)</span>
+<span class="nf">fib</span> <span class="ow">::</span> <span class="kt">Int</span> <span class="ow">-&gt;</span> <span class="kt">Integer</span>
+
+<span class="c1">-- With self-referencing data</span>
+<span class="nf">fib</span> <span class="n">n</span> <span class="ow">=</span> <span class="n">fibs</span> <span class="o">!!</span> <span class="n">n</span>
+        <span class="kr">where</span> <span class="n">fibs</span> <span class="ow">=</span> <span class="mi">0</span> <span class="kt">:</span> <span class="n">scanl</span> <span class="p">(</span><span class="o">+</span><span class="p">)</span> <span class="mi">1</span> <span class="n">fibs</span>
+        <span class="c1">-- 0,1,1,2,3,5,...</span>
+
+<span class="c1">-- Same, coded directly</span>
+<span class="nf">fib</span> <span class="n">n</span> <span class="ow">=</span> <span class="n">fibs</span> <span class="o">!!</span> <span class="n">n</span>
+        <span class="kr">where</span> <span class="n">fibs</span> <span class="ow">=</span> <span class="mi">0</span> <span class="kt">:</span> <span class="mi">1</span> <span class="kt">:</span> <span class="n">next</span> <span class="n">fibs</span>
+              <span class="n">next</span> <span class="p">(</span><span class="n">a</span> <span class="kt">:</span> <span class="n">t</span><span class="o">@</span><span class="p">(</span><span class="n">b</span><span class="kt">:</span><span class="kr">_</span><span class="p">))</span> <span class="ow">=</span> <span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="p">)</span> <span class="kt">:</span> <span class="n">next</span> <span class="n">t</span>
+
+<span class="c1">-- Similar idea, using zipWith</span>
+<span class="nf">fib</span> <span class="n">n</span> <span class="ow">=</span> <span class="n">fibs</span> <span class="o">!!</span> <span class="n">n</span>
+        <span class="kr">where</span> <span class="n">fibs</span> <span class="ow">=</span> <span class="mi">0</span> <span class="kt">:</span> <span class="mi">1</span> <span class="kt">:</span> <span class="n">zipWith</span> <span class="p">(</span><span class="o">+</span><span class="p">)</span> <span class="n">fibs</span> <span class="p">(</span><span class="n">tail</span> <span class="n">fibs</span><span class="p">)</span>
+
+<span class="c1">-- Using a generator function</span>
+<span class="nf">fib</span> <span class="n">n</span> <span class="ow">=</span> <span class="n">fibs</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span> <span class="o">!!</span> <span class="n">n</span>
+        <span class="kr">where</span> <span class="n">fibs</span> <span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">)</span> <span class="ow">=</span> <span class="n">a</span> <span class="kt">:</span> <span class="n">fibs</span> <span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="p">)</span>
+</pre></div>
+<p>The <i>Int</i> type refers to a machine-sized integer (used as a list subscript with the&#160;!! operator), while <i>Integer</i> is an <a href="/wiki/Arbitrary-precision" title="Arbitrary-precision" class="mw-redirect">arbitrary-precision</a> integer. For example, using <i>Integer</i>, the factorial code above easily computes "factorial 100000" as an incredibly large number of 456,574 digits, with no loss of precision.</p>
+<p>This is an implementation of an algorithm similar to <a href="/wiki/Quick_sort" title="Quick sort" class="mw-redirect">quick sort</a> over lists, in which the first element is taken as the pivot:</p>
+<div class="mw-highlight mw-content-ltr" dir="ltr">
+<pre>
+<span class="nf">quickSort</span> <span class="ow">::</span> <span class="kt">Ord</span> <span class="n">a</span> <span class="ow">=&gt;</span> <span class="p">[</span><span class="n">a</span><span class="p">]</span> <span class="ow">-&gt;</span> <span class="p">[</span><span class="n">a</span><span class="p">]</span>
+<span class="nf">quickSort</span> <span class="kt">[]</span>     <span class="ow">=</span> <span class="kt">[]</span>                               <span class="c1">-- The empty list is already sorted</span>
+<span class="nf">quickSort</span> <span class="p">(</span><span class="n">x</span><span class="kt">:</span><span class="n">xs</span><span class="p">)</span> <span class="ow">=</span> <span class="n">quickSort</span> <span class="p">[</span><span class="n">a</span> <span class="o">|</span> <span class="n">a</span> <span class="ow">&lt;-</span> <span class="n">xs</span><span class="p">,</span> <span class="n">a</span> <span class="o">&lt;</span> <span class="n">x</span><span class="p">]</span>   <span class="c1">-- Sort the left part of the list</span>
+                   <span class="o">++</span> <span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">++</span>                        <span class="c1">-- Insert pivot between two sorted parts</span>
+                   <span class="n">quickSort</span> <span class="p">[</span><span class="n">a</span> <span class="o">|</span> <span class="n">a</span> <span class="ow">&lt;-</span> <span class="n">xs</span><span class="p">,</span> <span class="n">a</span> <span class="o">&gt;=</span> <span class="n">x</span><span class="p">]</span>  <span class="c1">-- Sort the right part of the list</span>
+</pre></div>
+<h2><span class="mw-headline" id="Implementations">Implementations</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=8" title="Edit section: Implementations">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p>All listed implementations are distributed under <a href="/wiki/Open_source" title="Open source">open source</a> licenses.<sup id="cite_ref-implementations_32-0" class="reference"><a href="#cite_note-implementations-32"><span>[</span>32<span>]</span></a></sup></p>
+<p>The following implementations comply fully, or very nearly, with the Haskell 98 standard.</p>
+<ul>
+<li>The <b><a href="/wiki/Glasgow_Haskell_Compiler" title="Glasgow Haskell Compiler">Glasgow Haskell Compiler</a></b> (GHC) compiles to native code on a number of different architectures—as well as to <a href="/wiki/ANSI_C" title="ANSI C">ANSI C</a>—using <a href="/wiki/C--" title="C--">C--</a> as an <a href="/wiki/Intermediate_language" title="Intermediate language">intermediate language</a>. GHC has become the <i>de facto</i> standard Haskell dialect.<sup id="cite_ref-33" class="reference"><a href="#cite_note-33"><span>[</span>33<span>]</span></a></sup> There are libraries (e.g. bindings to <a href="/wiki/OpenGL" title="OpenGL">OpenGL</a>) that will work only with GHC. GHC is also distributed along with the <a href="/wiki/Haskell_platform" title="Haskell platform" class="mw-redirect">Haskell platform</a>.</li>
+<li>The <b><a href="/w/index.php?title=Utrecht_Haskell_Compiler&amp;action=edit&amp;redlink=1" class="new" title="Utrecht Haskell Compiler (page does not exist)">Utrecht Haskell Compiler</a></b> (UHC) is a Haskell implementation from <a href="/wiki/Utrecht_University" title="Utrecht University">Utrecht University</a>. UHC supports almost all Haskell 98 features plus many experimental extensions. It is implemented using <a href="/wiki/Attribute_grammar" title="Attribute grammar">attribute grammars</a> and is currently mainly used for research into generated type systems and language extensions.</li>
+<li><b><a href="/w/index.php?title=Jhc&amp;action=edit&amp;redlink=1" class="new" title="Jhc (page does not exist)">Jhc</a></b> is a Haskell compiler written by John Meacham emphasising speed and efficiency of generated programs as well as exploration of new program transformations.</li>
+<li><b><a href="/w/index.php?title=Ajhc&amp;action=edit&amp;redlink=1" class="new" title="Ajhc (page does not exist)">Ajhc</a></b> is a fork of Jhc.</li>
+<li><b><a href="/w/index.php?title=LHC_(compiler)&amp;action=edit&amp;redlink=1" class="new" title="LHC (compiler) (page does not exist)">LHC</a></b> is a whole-program optimizing backend for <a href="/wiki/Glasgow_Haskell_Compiler" title="Glasgow Haskell Compiler">GHC</a>. It is based on Urban Boquist’s compiler intermediate language, GRIN.<sup id="cite_ref-34" class="reference"><a href="#cite_note-34"><span>[</span>34<span>]</span></a></sup> Older versions of LHC were based on Jhc rather than GHC.</li>
+</ul>
+<p>The following implementations are no longer being actively maintained:</p>
+<ul>
+<li><b><a href="/wiki/Hugs" title="Hugs">Hugs</a></b>, the <b>Haskell User's Gofer System</b>, is a <a href="/wiki/Bytecode" title="Bytecode">bytecode</a> interpreter. It used to be one of the most widely used implementations alongside the GHC compiler,<sup id="cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-22_35-0" class="reference"><a href="#cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-22-35"><span>[</span>35<span>]</span></a></sup> but has now been mostly replaced by GHCi. It also comes with a graphics library.</li>
+<li><b><a href="/w/index.php?title=Nhc98&amp;action=edit&amp;redlink=1" class="new" title="Nhc98 (page does not exist)">nhc98</a></b> is another bytecode compiler. Nhc98 focuses on minimizing memory usage.</li>
+<li><b><a href="/wiki/Yhc" title="Yhc">Yhc</a></b>, the <b>York Haskell Compiler</b> was a fork of nhc98, with the goals of being simpler, more portable and more efficient, and integrating support for Hat, the Haskell tracer. It also featured a <a href="/wiki/JavaScript" title="JavaScript">JavaScript</a> backend, allowing users to run Haskell programs in a Web browser.</li>
+<li><b>HBC</b> is an early implementation supporting Haskell 1.4. It was implemented by <a href="/wiki/Lennart_Augustsson" title="Lennart Augustsson">Lennart Augustsson</a> in, and based on, <a href="/wiki/Lazy_ML" title="Lazy ML">Lazy ML</a>. It has not been actively developed for some time.</li>
+</ul>
+<p>The following implementations are not fully Haskell 98 compliant, and use a language that is a variant of Haskell:</p>
+<ul>
+<li><b><a href="/wiki/Gofer_(software)" title="Gofer (software)" class="mw-redirect">Gofer</a></b> was an educational dialect of Haskell, with a feature called "constructor classes", developed by Mark Jones. It was supplanted by Hugs (see above).</li>
+<li><b><a href="/wiki/Helium_(Haskell)" title="Helium (Haskell)">Helium</a></b> is a newer dialect of Haskell. The focus is on making it easy to learn by providing clearer error messages. It currently lacks full support for type classes, rendering it incompatible with many Haskell programs.</li>
+</ul>
+<h2><span class="mw-headline" id="Applications">Applications</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=9" title="Edit section: Applications">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p><a href="/wiki/Darcs" title="Darcs">Darcs</a> is a revision control system written in Haskell, with several innovative features. Cabal is a tool for building and packaging Haskell libraries and programs.<sup id="cite_ref-36" class="reference"><a href="#cite_note-36"><span>[</span>36<span>]</span></a></sup> <a href="/wiki/Linspire" title="Linspire">Linspire</a> GNU/Linux chose Haskell for system tools development.<sup id="cite_ref-37" class="reference"><a href="#cite_note-37"><span>[</span>37<span>]</span></a></sup> <a href="/wiki/Xmonad" title="Xmonad">Xmonad</a> is a <a href="/wiki/Window_manager" title="Window manager">window manager</a> for the <a href="/wiki/X_Window_System" title="X Window System">X Window System</a>, written entirely in Haskell.<sup id="cite_ref-38" class="reference"><a href="#cite_note-38"><span>[</span>38<span>]</span></a></sup> GHC is also often a testbed for advanced functional programming features and optimizations in other programming languages.</p>
+<h2><span class="mw-headline" id="Industry">Industry</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=10" title="Edit section: Industry">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<ul>
+<li><a href="/wiki/Facebook" title="Facebook">Facebook</a> implements its anti-spam programs in Haskell.<sup id="cite_ref-39" class="reference"><a href="#cite_note-39"><span>[</span>39<span>]</span></a></sup></li>
+<li><a href="/w/index.php?title=Bluespec_SystemVerilog&amp;action=edit&amp;redlink=1" class="new" title="Bluespec SystemVerilog (page does not exist)">Bluespec SystemVerilog</a> (BSV) is a language for semiconductor design that is an extension of Haskell. Additionally, <a href="/wiki/Bluespec,_Inc." title="Bluespec, Inc.">Bluespec, Inc.</a>'s tools are implemented in Haskell.</li>
+</ul>
+<ul>
+<li><a href="/wiki/Cryptol" title="Cryptol">Cryptol</a>, a language and toolchain for developing and verifying cryptographic algorithms, is implemented in Haskell.</li>
+</ul>
+<ul>
+<li>The first formally verified <a href="/wiki/Microkernel" title="Microkernel">microkernel</a>,<sup id="cite_ref-klein-sosp09_40-0" class="reference"><a href="#cite_note-klein-sosp09-40"><span>[</span>40<span>]</span></a></sup> <a href="/wiki/SeL4#Current_research_and_development" title="SeL4" class="mw-redirect">seL4</a>, used Haskell as a prototyping language for the OS developer.<sup id="cite_ref-klein-sosp09_40-1" class="reference"><a href="#cite_note-klein-sosp09-40"><span>[</span>40<span>]</span></a></sup><sup class="reference" style="white-space:nowrap;">:p.2</sup> At the same time the Haskell code defined an executable specification with which to reason, for automatic translation by the theorem-proving tool.<sup id="cite_ref-klein-sosp09_40-2" class="reference"><a href="#cite_note-klein-sosp09-40"><span>[</span>40<span>]</span></a></sup><sup class="reference" style="white-space:nowrap;">:p.3</sup> The Haskell code thus served as an intermediate prototype before final <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a> refinement.<sup id="cite_ref-klein-sosp09_40-3" class="reference"><a href="#cite_note-klein-sosp09-40"><span>[</span>40<span>]</span></a></sup><sup class="reference" style="white-space:nowrap;">:p.3</sup></li>
+</ul>
+<h2><span class="mw-headline" id="Web">Web</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=11" title="Edit section: Web">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p>There are Haskell <a href="/wiki/Web_framework" title="Web framework" class="mw-redirect">web frameworks</a>,<sup id="cite_ref-41" class="reference"><a href="#cite_note-41"><span>[</span>41<span>]</span></a></sup> such as:</p>
+<ul>
+<li><a href="/wiki/Yesod_(web_framework)" title="Yesod (web framework)">Yesod</a></li>
+<li><a href="/wiki/Happstack" title="Happstack">Happstack</a></li>
+<li><a href="/wiki/Snap_(web_framework)" title="Snap (web framework)">Snap</a><sup id="cite_ref-42" class="reference"><a href="#cite_note-42"><span>[</span>42<span>]</span></a></sup></li>
+</ul>
+<h2><span class="mw-headline" id="Related_languages">Related languages</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=12" title="Edit section: Related languages">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p><a href="/wiki/Clean_(programming_language)" title="Clean (programming language)">Clean</a> is a close relative of Haskell. Its biggest deviation from Haskell is in the use of <a href="/wiki/Uniqueness_type" title="Uniqueness type">uniqueness types</a> instead of monads for I/O and side-effects.</p>
+<p>A series of languages inspired by Haskell, but with different type systems, have been developed, including:</p>
+<ul>
+<li><a href="/wiki/Agda_(theorem_prover)" title="Agda (theorem prover)" class="mw-redirect">Agda</a>, a functional language with <a href="/wiki/Dependent_type" title="Dependent type">dependent types</a></li>
+<li><a href="/wiki/Idris_(programming_language)" title="Idris (programming language)">Idris</a>, a general purpose functional language with <a href="/wiki/Dependent_type" title="Dependent type">dependent types</a>, developed at the <a href="/wiki/University_of_St_Andrews" title="University of St Andrews">University of St Andrews</a></li>
+<li><a href="/wiki/Epigram_(programming_language)" title="Epigram (programming language)">Epigram</a>, a functional language with dependent types suitable for proving properties of programs</li>
+<li><a href="/wiki/Cayenne_(programming_language)" title="Cayenne (programming language)">Cayenne</a>, with <a href="/wiki/Dependent_type" title="Dependent type">dependent types</a></li>
+<li><a href="/wiki/%CE%A9mega" title="Ωmega">Ωmega</a>, strict and more</li>
+<li><a href="/wiki/Elm_(programming_language)" title="Elm (programming language)">Elm</a>, a functional language to create web front-end apps, no support for higher-kinded types</li>
+</ul>
+<p><a href="/wiki/JVM" title="JVM" class="mw-redirect">JVM</a>-based:</p>
+<ul>
+<li><a href="/wiki/Frege_(programming_language)" title="Frege (programming language)">Frege</a>, a Haskell-like language with Java's <a href="/wiki/Scalar_(computing)" title="Scalar (computing)" class="mw-redirect">scalar</a> types and good Java integration.<sup id="cite_ref-frege_43-0" class="reference"><a href="#cite_note-frege-43"><span>[</span>43<span>]</span></a></sup><sup id="cite_ref-frege-wiki_44-0" class="reference"><a href="#cite_note-frege-wiki-44"><span>[</span>44<span>]</span></a></sup><sup id="cite_ref-45" class="reference"><a href="#cite_note-45"><span>[</span>45<span>]</span></a></sup></li>
+<li>Jaskell, a functional scripting programming language that runs in Java VM.<sup id="cite_ref-46" class="reference"><a href="#cite_note-46"><span>[</span>46<span>]</span></a></sup></li>
+</ul>
+<p>Other related languages include:</p>
+<ul>
+<li><a href="/wiki/Curry_(programming_language)" title="Curry (programming language)">Curry</a>, a functional/logic programming language based on Haskell</li>
+</ul>
+<p>Haskell has served as a testbed for many new ideas in language design. There have been a wide number of Haskell variants produced, exploring new language ideas, including:</p>
+<ul>
+<li>Parallel Haskell:
+<ul>
+<li>From <a href="/wiki/Glasgow_University" title="Glasgow University" class="mw-redirect">Glasgow University</a>, supports clusters of machines or single multiprocessors.<sup id="cite_ref-47" class="reference"><a href="#cite_note-47"><span>[</span>47<span>]</span></a></sup><sup id="cite_ref-48" class="reference"><a href="#cite_note-48"><span>[</span>48<span>]</span></a></sup> Also within Haskell is support for Symmetric Multiprocessor parallelism.<sup id="cite_ref-49" class="reference"><a href="#cite_note-49"><span>[</span>49<span>]</span></a></sup></li>
+<li>From <a href="/wiki/Massachusetts_Institute_of_Technology" title="Massachusetts Institute of Technology">MIT</a><sup id="cite_ref-50" class="reference"><a href="#cite_note-50"><span>[</span>50<span>]</span></a></sup></li>
+</ul>
+</li>
+<li>Distributed Haskell (formerly Goffin) and Eden.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (April 2009)">citation needed</span></a></i>]</sup></li>
+<li>Eager Haskell, based on <a href="/wiki/Speculative_execution" title="Speculative execution">speculative evaluation</a>.</li>
+<li>Several <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented</a> versions: Haskell++, and Mondrian.</li>
+<li><a href="/wiki/Generic_programming#Generic_Haskell" title="Generic programming">Generic Haskell</a>, a version of Haskell with type system support for <a href="/wiki/Generic_programming" title="Generic programming">generic programming</a>.</li>
+<li>O'Haskell, an extension of Haskell adding <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-orientation</a> and <a href="/wiki/Concurrent_programming" title="Concurrent programming" class="mw-redirect">concurrent programming</a> support which "has ... been superseded by <a href="/wiki/Timber_(programming_language)" title="Timber (programming language)">Timber</a>."<sup id="cite_ref-51" class="reference"><a href="#cite_note-51"><span>[</span>51<span>]</span></a></sup></li>
+<li><a href="/w/index.php?title=Disciple_(programming_language)&amp;action=edit&amp;redlink=1" class="new" title="Disciple (programming language) (page does not exist)">Disciple</a>, a strict-by-default (laziness available by annotation) dialect of Haskell which supports destructive update, computational effects, type directed field projections and allied functional goodness.</li>
+<li>Scotch, a kind of hybrid of Haskell and Python.<sup id="cite_ref-52" class="reference"><a href="#cite_note-52"><span>[</span>52<span>]</span></a></sup><sup id="cite_ref-53" class="reference"><a href="#cite_note-53"><span>[</span>53<span>]</span></a></sup></li>
+<li><a href="/wiki/Hume_(programming_language)" title="Hume (programming language)">Hume</a>, a strict functional <a href="/wiki/Programming_language" title="Programming language">programming language</a> for <a href="/wiki/Embedded_system" title="Embedded system">embedded systems</a> based on processes as stateless automata over a sort of tuples of single element mailbox channels where the state is kept by feedback into the mailboxes, and a mapping description from outputs to channels as box wiring, with a Haskell-like expression language and syntax.</li>
+</ul>
+<h2><span class="mw-headline" id="Criticism">Criticism</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=13" title="Edit section: Criticism">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p>Jan-Willem Maessen, in 2002, and <a href="/wiki/Simon_Peyton_Jones" title="Simon Peyton Jones">Simon Peyton Jones</a>, in 2003, discussed problems associated with lazy evaluation while also acknowledging the theoretical motivation for it,<sup id="cite_ref-54" class="reference"><a href="#cite_note-54"><span>[</span>54<span>]</span></a></sup><sup id="cite_ref-55" class="reference"><a href="#cite_note-55"><span>[</span>55<span>]</span></a></sup> in addition to purely practical considerations such as improved performance.<sup id="cite_ref-56" class="reference"><a href="#cite_note-56"><span>[</span>56<span>]</span></a></sup> They note that, in addition to adding some performance overhead, lazy evaluation makes it more difficult for programmers to reason about the performance of their code (particularly its space usage).</p>
+<p>Bastiaan Heeren, Daan Leijen, and Arjan van IJzendoorn in 2003 also observed some stumbling blocks for Haskell learners: "The subtle syntax and sophisticated type system of Haskell are a double edged sword — highly appreciated by experienced programmers but also a source of frustration among beginners, since the generality of Haskell often leads to cryptic error messages."<sup id="cite_ref-57" class="reference"><a href="#cite_note-57"><span>[</span>57<span>]</span></a></sup> To address these, researchers from Utrecht University developed an advanced interpreter called <a href="/wiki/Helium_(Haskell)" title="Helium (Haskell)">Helium</a> which improved the user-friendliness of error messages by limiting the generality of some Haskell features, and in particular removing support for <a href="/wiki/Type_class" title="Type class">type classes</a>.</p>
+<p>Ben Lippmeier designed Disciple<sup id="cite_ref-58" class="reference"><a href="#cite_note-58"><span>[</span>58<span>]</span></a></sup> as a <a href="/wiki/Evaluation_strategy" title="Evaluation strategy">strict-by-default</a> (lazy by explicit annotation) dialect of Haskell with a type-and-effect system, to address Haskell's difficulties in reasoning about lazy evaluation and in using traditional data structures such as mutable arrays.<sup id="cite_ref-59" class="reference"><a href="#cite_note-59"><span>[</span>59<span>]</span></a></sup> He argues (p.&#160;20) that "destructive update furnishes the programmer with two important and powerful tools... a set of efficient array-like data structures for managing collections of objects, and ... the ability to broadcast a new value to all parts of a program with minimal burden on the programmer."</p>
+<p><a href="/wiki/Robert_Harper_(computer_scientist)" title="Robert Harper (computer scientist)">Robert Harper</a>, one of the authors of <a href="/wiki/Standard_ML" title="Standard ML">Standard ML</a>, has given his reasons for not using Haskell to teach introductory programming. Among these are the difficulty of reasoning about resource usage with non-strict evaluation, that lazy evaluation complicates the definition of data types and inductive reasoning,<sup id="cite_ref-60" class="reference"><a href="#cite_note-60"><span>[</span>60<span>]</span></a></sup> and the "inferiority" of Haskell's (old) class system compared to ML's module system.<sup id="cite_ref-61" class="reference"><a href="#cite_note-61"><span>[</span>61<span>]</span></a></sup></p>
+<h2><span class="mw-headline" id="Conferences_and_workshops">Conferences and workshops</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=14" title="Edit section: Conferences and workshops">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p>The Haskell community meets regularly for research and development activities. The primary events are:</p>
+<ul>
+<li>The <a href="/wiki/Haskell_Symposium" title="Haskell Symposium" class="mw-redirect">Haskell Symposium</a> (formerly the Haskell Workshop)</li>
+<li>The <a href="/w/index.php?title=Haskell_Implementors_Workshop&amp;action=edit&amp;redlink=1" class="new" title="Haskell Implementors Workshop (page does not exist)">Haskell Implementors Workshop</a></li>
+<li>The <a href="/wiki/International_Conference_on_Functional_Programming" title="International Conference on Functional Programming">International Conference on Functional Programming</a></li>
+</ul>
+<p>Since 2006, there have been a series of organized "hackathons", the Hac series, aimed at improving the programming language tools and libraries.<sup id="cite_ref-62" class="reference"><a href="#cite_note-62"><span>[</span>62<span>]</span></a></sup></p>
+<p>Since 2005, a growing number of Haskell <a href="/wiki/User_group" title="User group" class="mw-redirect">users' groups</a> have formed, in the United States, Canada, Australia, South America, Europe and Asia.</p>
+<h2><span class="mw-headline" id="References">References</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=15" title="Edit section: References">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<div class="reflist columns references-column-count references-column-count-2" style="-moz-column-count: 2; -webkit-column-count: 2; column-count: 2; list-style-type: decimal;">
+<ol class="references">
+<li id="cite_note-2010ann-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-2010ann_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-2010ann_1-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-2010ann_1-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite class="citation mailinglist">Marlow, Simon (24 November 2009). <a rel="nofollow" class="external text" href="http://www.haskell.org/pipermail/haskell/2009-November/021750.html">"Announcing Haskell 2010"</a>. <i>Haskell</i> (Mailing list)<span class="reference-accessdate">. Retrieved <span class="nowrap">12 March</span> 2011</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Simon&amp;rft.aulast=Marlow&amp;rft.btitle=Announcing+Haskell+2010&amp;rft.date=24+November+2009&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.haskell.org%2Fpipermail%2Fhaskell%2F2009-November%2F021750.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite class="citation mailinglist">Lynagh, Ian (1 May 2013). <a rel="nofollow" class="external text" href="http://www.haskell.org/pipermail/haskell-prime/2013-May/003825.html">"Haskell 2014"</a>. <i>Haskell-prime</i> (Mailing list)<span class="reference-accessdate">. Retrieved <span class="nowrap">9 October</span> 2013</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Ian&amp;rft.aulast=Lynagh&amp;rft.btitle=Haskell+2014&amp;rft.date=1+May+2013&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.haskell.org%2Fpipermail%2Fhaskell-prime%2F2013-May%2F003825.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-haskell-report-influences-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-haskell-report-influences_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-8"><sup><i><b>i</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-9"><sup><i><b>j</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-10"><sup><i><b>k</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-11"><sup><i><b>l</b></i></sup></a> <a href="#cite_ref-haskell-report-influences_3-12"><sup><i><b>m</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFPeyton_Jones2003">Peyton Jones 2003</a>, p.&#160;xi</span></li>
+<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web">Norell, Ulf (2008). <a rel="nofollow" class="external text" href="http://www.cse.chalmers.se/~ulfn/papers/afp08/tutorial.pdf">"Dependently Typed Programming in Agda"</a> <span style="font-size:85%;">(PDF)</span>. Gothenburg: Chalmers University<span class="reference-accessdate">. Retrieved <span class="nowrap">9 February</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Ulf&amp;rft.aulast=Norell&amp;rft.btitle=Dependently+Typed+Programming+in+Agda&amp;rft.date=2008&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.cse.chalmers.se%2F~ulfn%2Fpapers%2Fafp08%2Ftutorial.pdf&amp;rft.place=Gothenburg&amp;rft.pub=Chalmers+University&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-38.2C43-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-38.2C43_5-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFHudakHughesPeyton_JonesWadler2007">Hudak et al. 2007</a>, p.&#160;12-38,43.</span></li>
+<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite class="citation journal"><a href="/wiki/Bjarne_Stroustrup" title="Bjarne Stroustrup">Stroustrup, Bjarne</a>; Sutton, Andrew (2011). <a rel="nofollow" class="external text" href="http://www2.research.att.com/~bs/sle2011-concepts.pdf">"Design of Concept Libraries for C++"</a> <span style="font-size:85%;">(PDF)</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=Design+of+Concept+Libraries+for+C%2B%2B&amp;rft.aufirst=Bjarne&amp;rft.aulast=Stroustrup&amp;rft.au=Sutton%2C+Andrew&amp;rft.date=2011&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww2.research.att.com%2F~bs%2Fsle2011-concepts.pdf&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346-7"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-8"><sup><i><b>i</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-45.E2.80.9346_7-9"><sup><i><b>j</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFHudakHughesPeyton_JonesWadler2007">Hudak et al. 2007</a>, pp.&#160;12-45–46.</span></li>
+<li id="cite_note-meijer2012-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-meijer2012_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-meijer2012_8-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation journal"><a href="/wiki/Erik_Meijer_(computer_scientist)" title="Erik Meijer (computer scientist)">Meijer, Erik</a>. <a rel="nofollow" class="external text" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.868&amp;rep=rep1&amp;type=pdf">"Confessions of a Used Programming Language Salesman: Getting the Masses Hooked on Haskell"</a>. <i><a href="/wiki/OOPSLA" title="OOPSLA">OOPSLA</a> 2007</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=Confessions+of+a+Used+Programming+Language+Salesman%3A+Getting+the+Masses+Hooked+on+Haskell&amp;rft.aufirst=Erik&amp;rft.aulast=Meijer&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.72.868%26rep%3Drep1%26type%3Dpdf&amp;rft.jtitle=OOPSLA+2007&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite class="citation web">Meijer, Erik (1 October 2009). <a rel="nofollow" class="external text" href="http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/">"C9 Lectures: Dr. Erik Meijer – Functional Programming Fundamentals, Chapter 1 of 13"</a>. <i><a href="/wiki/Channel_9_(discussion_forum)" title="Channel 9 (discussion forum)" class="mw-redirect">Channel 9</a></i>. Microsoft<span class="reference-accessdate">. Retrieved <span class="nowrap">9 February</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Erik&amp;rft.aulast=Meijer&amp;rft.btitle=C9+Lectures%3A+Dr.+Erik+Meijer+%E2%80%93+Functional+Programming+Fundamentals%2C+Chapter+1+of+13&amp;rft.date=1+October+2009&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fchannel9.msdn.com%2Fshows%2FGoing%2BDeep%2FLecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1%2F&amp;rft.pub=Microsoft&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation news">Drobi, Sadek (4 March 2009). <a rel="nofollow" class="external text" href="http://www.infoq.com/interviews/LINQ-Erik-Meijer">"Erik Meijer on LINQ"</a>. <i>InfoQ</i> (QCon <a href="/wiki/San_Francisco" title="San Francisco">SF</a> 2008: C4Media Inc.)<span class="reference-accessdate">. Retrieved <span class="nowrap">9 February</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=Erik+Meijer+on+LINQ&amp;rft.aufirst=Sadek&amp;rft.aulast=Drobi&amp;rft.date=4+March+2009&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww.infoq.com%2Finterviews%2FLINQ-Erik-Meijer&amp;rft.jtitle=InfoQ&amp;rft.place=QCon+SF+2008&amp;rft.pub=C4Media+Inc.&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite class="citation web">Hickey, Rich. <a rel="nofollow" class="external text" href="http://www.amazon.com/gp/richpub/listmania/fullview/R3LG3ZBZS4GCTH">"Clojure Bookshelf"</a>. <i>Listmania!</i>. Amazon.com<span class="reference-accessdate">. Retrieved <span class="nowrap">9 February</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Rich&amp;rft.aulast=Hickey&amp;rft.btitle=Clojure+Bookshelf&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.amazon.com%2Fgp%2Frichpub%2Flistmania%2Ffullview%2FR3LG3ZBZS4GCTH&amp;rft.pub=Amazon.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation news">Heller, Martin (18 October 2011). <a rel="nofollow" class="external text" href="http://www.javaworld.com/javaworld/jw-10-2011/111018-coffeescript-vs-dart.html">"Turn up your nose at Dart and smell the CoffeeScript"</a>. <i>JavaWorld</i> (InfoWorld)<span class="reference-accessdate">. Retrieved <span class="nowrap">9 February</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=Turn+up+your+nose+at+Dart+and+smell+the+CoffeeScript&amp;rft.aufirst=Martin&amp;rft.aulast=Heller&amp;rft.date=18+October+2011&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww.javaworld.com%2Fjavaworld%2Fjw-10-2011%2F111018-coffeescript-vs-dart.html&amp;rft.jtitle=JavaWorld&amp;rft.pub=InfoWorld&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite class="citation book"><a href="/wiki/Don_Syme" title="Don Syme">Syme, Don</a>; Granicz, Adam; Cisternino, Antonio (2007). <i>Expert F#</i>. <a href="/wiki/Apress" title="Apress">Apress</a>. p.&#160;2. <q>F# also draws from Haskell particularly with regard to two advanced language features called <i>sequence expressions</i> and <i>workflows</i>.</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.au=Cisternino%2C+Antonio&amp;rft.aufirst=Don&amp;rft.au=Granicz%2C+Adam&amp;rft.aulast=Syme&amp;rft.btitle=Expert+F%23&amp;rft.date=2007&amp;rft.genre=book&amp;rft.pages=2&amp;rft.pub=Apress&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite class="citation web">Wechsung, Ingo. <a rel="nofollow" class="external text" href="http://www.frege-lang.org/doc/Language.pdf">"The Frege Programming Language"</a> <span style="font-size:85%;">(PDF)</span><span class="reference-accessdate">. Retrieved <span class="nowrap">26 February</span> 2014</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Ingo&amp;rft.aulast=Wechsung&amp;rft.btitle=The+Frege+Programming+Language&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.frege-lang.org%2Fdoc%2FLanguage.pdf&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://www.idris-lang.org/">"Idris, a dependently typed language"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-10-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Idris%2C+a+dependently+typed+language&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.idris-lang.org%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://kayalang.org">"Kaya Inspiration"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-11-22</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Kaya+Inspiration&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fkayalang.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://livescript.net/#inspiration">"LiveScript Inspiration"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-02-04</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=LiveScript+Inspiration&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Flivescript.net%2F%23inspiration&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://www.perlfoundation.org/perl6/index.cgi?glossary_of_terms_and_jargon">"Glossary of Terms and Jargon"</a>. <i>Perl Foundation Perl 6 Wiki</i>. <a href="/wiki/The_Perl_Foundation" title="The Perl Foundation" class="mw-redirect">The Perl Foundation</a>. 28 February<span class="reference-accessdate">. Retrieved <span class="nowrap">9 February</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Glossary+of+Terms+and+Jargon&amp;rft.date=28+February&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.perlfoundation.org%2Fperl6%2Findex.cgi%3Fglossary_of_terms_and_jargon&amp;rft.pub=The+Perl+Foundation&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span> <span style="font-size:100%" class="error citation-comment">Check date values in: <code style="color:inherit; border:inherit; padding:inherit;">|date=</code> (<a href="/wiki/Help:CS1_errors#bad_date" title="Help:CS1 errors">help</a>)</span></span></li>
+<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><cite class="citation web">Kuchling, A. M. <a rel="nofollow" class="external text" href="https://docs.python.org/howto/functional.html">"Functional Programming HOWTO"</a>. <i>Python v2.7.2 documentation</i>. Python Software Foundation<span class="reference-accessdate">. Retrieved <span class="nowrap">9 February</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=A.+M.&amp;rft.aulast=Kuchling&amp;rft.btitle=Functional+Programming+HOWTO&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Fdocs.python.org%2Fhowto%2Ffunctional.html&amp;rft.pub=Python+Software+Foundation&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite class="citation web">Fogus, Michael (6 August 2010). <a rel="nofollow" class="external text" href="http://blog.fogus.me/2010/08/06/martinodersky-take5-tolist/">"MartinOdersky take(5) toList"</a>. <i>Send More Paramedics</i><span class="reference-accessdate">. Retrieved <span class="nowrap">9 February</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Michael&amp;rft.aulast=Fogus&amp;rft.btitle=MartinOdersky+take%285%29+toList&amp;rft.date=6+August+2010&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fblog.fogus.me%2F2010%2F08%2F06%2Fmartinodersky-take5-tolist%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-lattner2014-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-lattner2014_21-0">^</a></b></span> <span class="reference-text"><cite class="citation web">Lattner, Chris (2014-06-03). <a rel="nofollow" class="external text" href="http://nondot.org/sabre/">"Chris Lattner's Homepage"</a>. Chris Lattner<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-06-03</span></span>. <q>The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.</q></cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Chris&amp;rft.aulast=Lattner&amp;rft.btitle=Chris+Lattner%27s+Homepage&amp;rft.date=2014-06-03&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fnondot.org%2Fsabre%2F&amp;rft.pub=Chris+Lattner&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><cite class="citation mailinglist">Chevalier, Tim (28 January 2008). <a rel="nofollow" class="external text" href="http://www.haskell.org/pipermail/haskell-cafe/2008-January/038756.html">"anybody can tell me the pronuncation of "haskell"?"</a>. <i>Haskell-cafe</i> (Mailing list)<span class="reference-accessdate">. Retrieved <span class="nowrap">12 March</span> 2011</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Tim&amp;rft.aulast=Chevalier&amp;rft.btitle=anybody+can+tell+me+the+pronuncation+of+%22haskell%22%3F&amp;rft.date=28+January+2008&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.haskell.org%2Fpipermail%2Fhaskell-cafe%2F2008-January%2F038756.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-FOOTNOTEPeyton_Jones2003-23"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEPeyton_Jones2003_23-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEPeyton_Jones2003_23-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-FOOTNOTEPeyton_Jones2003_23-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFPeyton_Jones2003">Peyton Jones 2003</a>.</span></li>
+<li id="cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler2007-24"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler2007_24-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler2007_24-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFHudakHughesPeyton_JonesWadler2007">Hudak et al. 2007</a>.</span></li>
+<li id="cite_note-FOOTNOTEPeyton_Jones2003Preface-25"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEPeyton_Jones2003Preface_25-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEPeyton_Jones2003Preface_25-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-FOOTNOTEPeyton_Jones2003Preface_25-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFPeyton_Jones2003">Peyton Jones 2003</a>, Preface.</span></li>
+<li id="cite_note-HaskellWikiImpl-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-HaskellWikiImpl_26-0">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://www.haskell.org/haskellwiki/Implementations">"Haskell Wiki: Implementations"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">18 December</span> 2012</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Haskell+Wiki%3A+Implementations&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.haskell.org%2Fhaskellwiki%2FImplementations&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://hackage.haskell.org/trac/haskell-prime">"Welcome to Haskell<span style="padding-right:0.2em;">'</span>"</a>. <i>The Haskell' Wiki</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Welcome+to+Haskell%27&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fhackage.haskell.org%2Ftrac%2Fhaskell-prime&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-wadler89-28"><span class="mw-cite-backlink"><b><a href="#cite_ref-wadler89_28-0">^</a></b></span> <span class="reference-text"><cite class="citation journal">Wadler, P.; Blott, S. (1989). "How to make ad-hoc polymorphism less ad hoc". <i>Proceedings of the 16th ACM <a href="/wiki/SIGPLAN" title="SIGPLAN">SIGPLAN</a>-<a href="/wiki/SIGACT" title="SIGACT" class="mw-redirect">SIGACT</a> <a href="/wiki/Symposium_on_Principles_of_Programming_Languages" title="Symposium on Principles of Programming Languages">Symposium on Principles of Programming Languages</a></i> (<a href="/wiki/Association_for_Computing_Machinery" title="Association for Computing Machinery">ACM</a>): 60–76. <a href="/wiki/Digital_object_identifier" title="Digital object identifier">doi</a>:<a rel="nofollow" class="external text" href="//dx.doi.org/10.1145%2F75277.75283">10.1145/75277.75283</a>. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-89791-294-2" title="Special:BookSources/0-89791-294-2">0-89791-294-2</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=How+to+make+ad-hoc+polymorphism+less+ad+hoc&amp;rft.au=Blott%2C+S.&amp;rft.aufirst=P.&amp;rft.aulast=Wadler&amp;rft.date=1989&amp;rft.genre=article&amp;rft_id=info%3Adoi%2F10.1145%2F75277.75283&amp;rft.isbn=0-89791-294-2&amp;rft.jtitle=Proceedings+of+the+16th+ACM+SIGPLAN-SIGACT+Symposium+on+Principles+of+Programming+Languages&amp;rft.pages=60-76&amp;rft.pub=ACM&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-hallgren01-29"><span class="mw-cite-backlink"><b><a href="#cite_ref-hallgren01_29-0">^</a></b></span> <span class="reference-text"><cite class="citation journal">Hallgren, T. (January 2001). <a rel="nofollow" class="external text" href="http://www.cs.chalmers.se/~hallgren/Papers/wm01.html">"Fun with Functional Dependencies, or Types as Values in Static Computations in Haskell"</a>. <i>Proceedings of the Joint CS/CE Winter Meeting</i> (Varberg, Sweden).</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=Fun+with+Functional+Dependencies%2C+or+Types+as+Values+in+Static+Computations+in+Haskell&amp;rft.aufirst=T.&amp;rft.aulast=Hallgren&amp;rft.date=January+2001&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww.cs.chalmers.se%2F~hallgren%2FPapers%2Fwm01.html&amp;rft.jtitle=Proceedings+of+the+Joint+CS%2FCE+Winter+Meeting&amp;rft.place=Varberg%2C+Sweden&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-shootout-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-shootout_30-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://shootout.alioth.debian.org/">Computer Language Benchmarks Game</a></span></li>
+<li id="cite_note-hackage-stats-31"><span class="mw-cite-backlink"><b><a href="#cite_ref-hackage-stats_31-0">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://hackage.haskell.org/cgi-bin/hackage-scripts/stats">"HackageDB statistics"</a>. Hackage.haskell.org<span class="reference-accessdate">. Retrieved <span class="nowrap">2013-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=HackageDB+statistics&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fhackage.haskell.org%2Fcgi-bin%2Fhackage-scripts%2Fstats&amp;rft.pub=Hackage.haskell.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-implementations-32"><span class="mw-cite-backlink"><b><a href="#cite_ref-implementations_32-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.haskell.org/haskellwiki/Implementations">"Implementations"</a> at the Haskell Wiki</span></li>
+<li id="cite_note-33"><span class="mw-cite-backlink"><b><a href="#cite_ref-33">^</a></b></span> <span class="reference-text">C. Ryder and S. Thompson (2005). <a rel="nofollow" class="external text" href="http://kar.kent.ac.uk/14237/1/Tech_Chris.pdf">"Porting HaRe to the GHC API"</a></span></li>
+<li id="cite_note-34"><span class="mw-cite-backlink"><b><a href="#cite_ref-34">^</a></b></span> <span class="reference-text"><cite class="citation journal">Boquist, Urban; Johnsson, Thomas (1996). "The GRIN Project: A Highly Optimising Back End for Lazy Functional Languages". <i>LNCS</i> <b>1268</b>: 58–84.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=The+GRIN+Project%3A+A+Highly+Optimising+Back+End+for+Lazy+Functional+Languages&amp;rft.aufirst=Urban&amp;rft.au=Johnsson%2C+Thomas&amp;rft.aulast=Boquist&amp;rft.date=1996&amp;rft.genre=article&amp;rft.jtitle=LNCS&amp;rft.pages=58-84&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.volume=1268" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-FOOTNOTEHudakHughesPeyton_JonesWadler200712-22-35"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEHudakHughesPeyton_JonesWadler200712-22_35-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFHudakHughesPeyton_JonesWadler2007">Hudak et al. 2007</a>, p.&#160;12-22.</span></li>
+<li id="cite_note-36"><span class="mw-cite-backlink"><b><a href="#cite_ref-36">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://www.haskell.org/cabal/">"The Haskell Cabal"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">8 April</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=The+Haskell+Cabal&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Fwww.haskell.org%2Fcabal%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-37"><span class="mw-cite-backlink"><b><a href="#cite_ref-37">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://urchin.earth.li/pipermail/debian-haskell/2006-May/000169.html">"Linspire/Freespire Core OS Team and Haskell"</a>. <i>Debian Haskell mailing list</i>. May 2006.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Linspire%2FFreespire+Core+OS+Team+and+Haskell&amp;rft.date=May+2006&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Furchin.earth.li%2Fpipermail%2Fdebian-haskell%2F2006-May%2F000169.html&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-38"><span class="mw-cite-backlink"><b><a href="#cite_ref-38">^</a></b></span> <span class="reference-text">xmonad.org</span></li>
+<li id="cite_note-39"><span class="mw-cite-backlink"><b><a href="#cite_ref-39">^</a></b></span> <span class="reference-text"><cite class="citation web">Metz, Cade (September 1, 2015). <a rel="nofollow" class="external text" href="http://www.wired.com/2015/09/facebooks-new-anti-spam-system-hints-future-coding/">"Facebook’s New Spam-Killer Hints at the Future of Coding"</a>. <i><a href="/wiki/Wired_(magazine)" title="Wired (magazine)">Wired</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">September 1,</span> 2015</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Cade&amp;rft.aulast=Metz&amp;rft.btitle=Facebook%E2%80%99s+New+Spam-Killer+Hints+at+the+Future+of+Coding&amp;rft.date=September+1%2C+2015&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.wired.com%2F2015%2F09%2Ffacebooks-new-anti-spam-system-hints-future-coding%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-klein-sosp09-40"><span class="mw-cite-backlink">^ <a href="#cite_ref-klein-sosp09_40-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-klein-sosp09_40-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-klein-sosp09_40-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-klein-sosp09_40-3"><sup><i><b>d</b></i></sup></a></span> <span class="reference-text">A formal proof of functional correctness was completed in 2009. <cite class="citation conference">Klein, Gerwin; Elphinstone, Kevin; <a href="/wiki/Gernot_Heiser" title="Gernot Heiser">Heiser, Gernot</a>; Andronick, June; Cock, David; Derrin, Philip; Elkaduwe, Dhammika; Engelhardt, Kai; Kolanski, Rafal; Norrish, Michael; Sewell, Thomas; Tuch, Harvey; Winwood, Simon (October 2009). <a rel="nofollow" class="external text" href="http://www.sigops.org/sosp/sosp09/papers/klein-sosp09.pdf">"seL4: Formal verification of an OS kernel"</a> <span style="font-size:85%;">(PDF)</span>. <i>22nd ACM Symposium on Operating System Principles</i>. Big Sky, MT, USA.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=seL4%3A+Formal+verification+of+an+OS+kernel&amp;rft.au=Andronick%2C+June&amp;rft.au=Cock%2C+David&amp;rft.au=Derrin%2C+Philip&amp;rft.au=Elkaduwe%2C+Dhammika&amp;rft.au=Elphinstone%2C+Kevin&amp;rft.au=Engelhardt%2C+Kai&amp;rft.aufirst=Gerwin&amp;rft.au=Heiser%2C+Gernot&amp;rft.au=Kolanski%2C+Rafal&amp;rft.aulast=Klein&amp;rft.au=Norrish%2C+Michael&amp;rft.au=Sewell%2C+Thomas&amp;rft.au=Tuch%2C+Harvey&amp;rft.au=Winwood%2C+Simon&amp;rft.btitle=22nd+ACM+Symposium+on+Operating+System+Principles&amp;rft.date=October+2009&amp;rft.genre=bookitem&amp;rft_id=http%3A%2F%2Fwww.sigops.org%2Fsosp%2Fsosp09%2Fpapers%2Fklein-sosp09.pdf&amp;rft.place=Big+Sky%2C+MT%2C+USA&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-41"><span class="mw-cite-backlink"><b><a href="#cite_ref-41">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.haskell.org/haskellwiki/Web/Frameworks">HaskellWiki – Haskell web frameworks</a></span></li>
+<li id="cite_note-42"><span class="mw-cite-backlink"><b><a href="#cite_ref-42">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://snapframework.com/">"Snap: A Haskell Web Framework: Home"</a>. Snapframework.com<span class="reference-accessdate">. Retrieved <span class="nowrap">2013-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Snap%3A+A+Haskell+Web+Framework%3A+Home&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fsnapframework.com%2F&amp;rft.pub=Snapframework.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-frege-43"><span class="mw-cite-backlink"><b><a href="#cite_ref-frege_43-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://fregepl.blogspot.com">The Frege prog. lang.</a></span></li>
+<li id="cite_note-frege-wiki-44"><span class="mw-cite-backlink"><b><a href="#cite_ref-frege-wiki_44-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://code.google.com/p/frege/">Project Frege at google code</a></span></li>
+<li id="cite_note-45"><span class="mw-cite-backlink"><b><a href="#cite_ref-45">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://mmhelloworld.blogspot.com.es/2012/02/hello-world-frege.html">Hellow World and more with Frege</a></span></li>
+<li id="cite_note-46"><span class="mw-cite-backlink"><b><a href="#cite_ref-46">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://jaskell.codehaus.org/">Jaskell</a></span></li>
+<li id="cite_note-47"><span class="mw-cite-backlink"><b><a href="#cite_ref-47">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.macs.hw.ac.uk/~dsg/gph/">Glasgow Parallel Haskell</a></span></li>
+<li id="cite_note-48"><span class="mw-cite-backlink"><b><a href="#cite_ref-48">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.haskell.org/ghc/docs/6.6/html/users_guide/lang-parallel.html">GHC Language Features: Parallel Haskell</a></span></li>
+<li id="cite_note-49"><span class="mw-cite-backlink"><b><a href="#cite_ref-49">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.haskell.org/ghc/docs/6.6/html/users_guide/sec-using-smp.html">Using GHC: Using SMP parallelism</a></span></li>
+<li id="cite_note-50"><span class="mw-cite-backlink"><b><a href="#cite_ref-50">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://csg.csail.mit.edu/projects/languages/ph.shtml">MIT Parallel Haskell</a></span></li>
+<li id="cite_note-51"><span class="mw-cite-backlink"><b><a href="#cite_ref-51">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.haskell.org/haskellwiki/O%27Haskell">OHaskell at HaskellWiki</a></span></li>
+<li id="cite_note-52"><span class="mw-cite-backlink"><b><a href="#cite_ref-52">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://scotchlang.org/">Scotch</a></span></li>
+<li id="cite_note-53"><span class="mw-cite-backlink"><b><a href="#cite_ref-53">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external autonumber" href="http://www.bendmorris.com/2011/01/what-problem-does-scotch-solve.html">[1]</a></span></li>
+<li id="cite_note-54"><span class="mw-cite-backlink"><b><a href="#cite_ref-54">^</a></b></span> <span class="reference-text">Jan-Willem Maessen. <i>Eager Haskell: Resource-bounded execution yields efficient iteration</i>. Proceedings of the 2002 <a href="/wiki/Association_for_Computing_Machinery" title="Association for Computing Machinery">ACM</a> SIGPLAN workshop on Haskell.</span></li>
+<li id="cite_note-55"><span class="mw-cite-backlink"><b><a href="#cite_ref-55">^</a></b></span> <span class="reference-text">Simon Peyton Jones. <a rel="nofollow" class="external text" href="http://research.microsoft.com/~simonpj/papers/haskell-retrospective"><i>Wearing the hair shirt: a retrospective on Haskell</i></a>. Invited talk at <a href="/wiki/POPL" title="POPL" class="mw-redirect">POPL</a> 2003.</span></li>
+<li id="cite_note-56"><span class="mw-cite-backlink"><b><a href="#cite_ref-56">^</a></b></span> <span class="reference-text">Lazy evaluation can lead to excellent performance, such as in The Computer Language Benchmarks Game <a rel="nofollow" class="external autonumber" href="http://www.haskell.org/pipermail/haskell/2006-June/018127.html">[2]</a></span></li>
+<li id="cite_note-57"><span class="mw-cite-backlink"><b><a href="#cite_ref-57">^</a></b></span> <span class="reference-text"><cite class="citation journal">Heeren, Bastiaan; Leijen, Daan; van IJzendoorn, Arjan (2003). <a rel="nofollow" class="external text" href="http://www.cs.uu.nl/~bastiaan/heeren-helium.pdf">"Helium, for learning Haskell"</a> <span style="font-size:85%;">(PDF)</span>. <i>Proceedings of the 2003 <a href="/wiki/Association_for_Computing_Machinery" title="Association for Computing Machinery">ACM</a> <a href="/wiki/SIGPLAN" title="SIGPLAN">SIGPLAN</a> workshop on Haskell</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=Helium%2C+for+learning+Haskell&amp;rft.aufirst=Bastiaan&amp;rft.aulast=Heeren&amp;rft.au=Leijen%2C+Daan&amp;rft.au=van+IJzendoorn%2C+Arjan&amp;rft.date=2003&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww.cs.uu.nl%2F~bastiaan%2Fheeren-helium.pdf&amp;rft.jtitle=Proceedings+of+the+2003+ACM+SIGPLAN+workshop+on+Haskell&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-58"><span class="mw-cite-backlink"><b><a href="#cite_ref-58">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://www.haskell.org/haskellwiki/DDC">"DDC – HaskellWiki"</a>. Haskell.org. 2010-12-03<span class="reference-accessdate">. Retrieved <span class="nowrap">2013-06-26</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=DDC+%E2%80%93+HaskellWiki&amp;rft.date=2010-12-03&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.haskell.org%2Fhaskellwiki%2FDDC&amp;rft.pub=Haskell.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-59"><span class="mw-cite-backlink"><b><a href="#cite_ref-59">^</a></b></span> <span class="reference-text">Ben Lippmeier, <a rel="nofollow" class="external text" href="http://www.cse.unsw.edu.au/~benl/papers/thesis/lippmeier-impure-world.pdf">Type Inference and Optimisation for an Impure World</a>, <a href="/wiki/Australian_National_University" title="Australian National University">Australian National University</a> (2010) PhD thesis, chapter 1</span></li>
+<li id="cite_note-60"><span class="mw-cite-backlink"><b><a href="#cite_ref-60">^</a></b></span> <span class="reference-text"><cite class="citation web">Robert Harper. <a rel="nofollow" class="external text" href="http://existentialtype.wordpress.com/2011/04/24/the-real-point-of-laziness/">"The point of laziness"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.au=Robert+Harper&amp;rft.btitle=The+point+of+laziness&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fexistentialtype.wordpress.com%2F2011%2F04%2F24%2Fthe-real-point-of-laziness%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-61"><span class="mw-cite-backlink"><b><a href="#cite_ref-61">^</a></b></span> <span class="reference-text"><cite class="citation web">Robert Harper. <a rel="nofollow" class="external text" href="http://existentialtype.wordpress.com/2011/04/16/modules-matter-most/">"Modules matter most."</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.au=Robert+Harper&amp;rft.btitle=Modules+matter+most.&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fexistentialtype.wordpress.com%2F2011%2F04%2F16%2Fmodules-matter-most%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+<li id="cite_note-62"><span class="mw-cite-backlink"><b><a href="#cite_ref-62">^</a></b></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://haskell.org/haskellwiki/Hackathon">"Hackathon – HaskellWiki"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Hackathon+%E2%80%93+HaskellWiki&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fhaskell.org%2Fhaskellwiki%2FHackathon&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></span></li>
+</ol>
+</div>
+<h2><span class="mw-headline" id="Further_reading">Further reading</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=16" title="Edit section: Further reading">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<dl>
+<dt>Reports</dt>
+</dl>
+<ul>
+<li><cite id="CITEREFPeyton_Jones2003" class="citation book"><a href="/wiki/Simon_Peyton_Jones" title="Simon Peyton Jones">Peyton Jones, Simon</a>, ed. (2003). <a rel="nofollow" class="external text" href="http://haskell.org/onlinereport/"><i>Haskell 98 Language and Libraries: The Revised Report</i></a>. Cambridge University Press. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0521826144" title="Special:BookSources/0521826144">0521826144</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Haskell+98+Language+and+Libraries%3A+The+Revised+Report&amp;rft.date=2003&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fhaskell.org%2Fonlinereport%2F&amp;rft.isbn=0521826144&amp;rft.pub=Cambridge+University+Press&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite id="CITEREFMarlow2010" class="citation book"><a href="/wiki/Simon_Marlow" title="Simon Marlow">Marlow, Simon</a>, ed. (2010). <a rel="nofollow" class="external text" href="https://www.haskell.org/definition/haskell2010.pdf"><i>Haskell 2010 Language Report</i></a> <span style="font-size:85%;">(PDF)</span>. Haskell.org.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Haskell+2010+Language+Report&amp;rft.date=2010&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Fwww.haskell.org%2Fdefinition%2Fhaskell2010.pdf&amp;rft.pub=Haskell.org&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+</ul>
+<dl>
+<dt>Textbooks</dt>
+</dl>
+<ul>
+<li><cite class="citation book">Davie, Antony (1992). <i>An Introduction to Functional Programming Systems Using Haskell</i>. Cambridge University Press. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-521-25830-8" title="Special:BookSources/0-521-25830-8">0-521-25830-8</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Antony&amp;rft.aulast=Davie&amp;rft.btitle=An+Introduction+to+Functional+Programming+Systems+Using+Haskell&amp;rft.date=1992&amp;rft.genre=book&amp;rft.isbn=0-521-25830-8&amp;rft.pub=Cambridge+University+Press&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite class="citation book"><a href="/wiki/Richard_Bird_(computer_scientist)" title="Richard Bird (computer scientist)">Bird, Richard</a> (1998). <a rel="nofollow" class="external text" href="http://www.cs.ox.ac.uk/publications/books/functional/"><i>Introduction to Functional Programming using Haskell</i></a> (2nd ed.). Prentice Hall Press. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-13-484346-0" title="Special:BookSources/0-13-484346-0">0-13-484346-0</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Richard&amp;rft.aulast=Bird&amp;rft.btitle=Introduction+to+Functional+Programming+using+Haskell&amp;rft.date=1998&amp;rft.edition=2nd&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.cs.ox.ac.uk%2Fpublications%2Fbooks%2Ffunctional%2F&amp;rft.isbn=0-13-484346-0&amp;rft.pub=Prentice+Hall+Press&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite class="citation book"><a href="/wiki/Paul_Hudak" title="Paul Hudak">Hudak, Paul</a> (2000). <a rel="nofollow" class="external text" href="http://www.cs.yale.edu/homes/hudak/SOE/"><i>The Haskell School of Expression: Learning Functional Programming through Multimedia</i></a>. New York: Cambridge University Press. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0521643384" title="Special:BookSources/0521643384">0521643384</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Paul&amp;rft.aulast=Hudak&amp;rft.btitle=The+Haskell+School+of+Expression%3A+Learning+Functional+Programming+through+Multimedia&amp;rft.date=2000&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.cs.yale.edu%2Fhomes%2Fhudak%2FSOE%2F&amp;rft.isbn=0521643384&amp;rft.place=New+York&amp;rft.pub=Cambridge+University+Press&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite class="citation book"><a href="/w/index.php?title=Graham_Hutton&amp;action=edit&amp;redlink=1" class="new" title="Graham Hutton (page does not exist)">Hutton, Graham</a> (2007). <a rel="nofollow" class="external text" href="http://www.cs.nott.ac.uk/~gmh/book.html"><i>Programming in Haskell</i></a>. Cambridge University Press. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0521692695" title="Special:BookSources/0521692695">0521692695</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Graham&amp;rft.aulast=Hutton&amp;rft.btitle=Programming+in+Haskell&amp;rft.date=2007&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.cs.nott.ac.uk%2F~gmh%2Fbook.html&amp;rft.isbn=0521692695&amp;rft.pub=Cambridge+University+Press&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite class="citation book"><a href="/w/index.php?title=Bryan_O%27Sullivan_(computer_programmer)&amp;action=edit&amp;redlink=1" class="new" title="Bryan O'Sullivan (computer programmer) (page does not exist)">O'Sullivan, Bryan</a>; <a href="/w/index.php?title=Don_Stewart_(computer_programmer)&amp;action=edit&amp;redlink=1" class="new" title="Don Stewart (computer programmer) (page does not exist)">Stewart, Don</a>; <a href="/wiki/John_Goerzen" title="John Goerzen">Goerzen, John</a> (2008). <i><a href="/wiki/Real_World_Haskell" title="Real World Haskell">Real World Haskell</a></i>. Sebastopol: O'Reilly. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0-596-51498-0" title="Special:BookSources/0-596-51498-0">0-596-51498-0</a>&#160;(<a rel="nofollow" class="external text" href="http://book.realworldhaskell.org/read/">full text</a>)</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Bryan&amp;rft.au=Goerzen%2C+John&amp;rft.aulast=O%27Sullivan&amp;rft.au=Stewart%2C+Don&amp;rft.btitle=Real+World+Haskell&amp;rft.date=2008&amp;rft.genre=book&amp;rft.isbn=0-596-51498-0&amp;rft.place=Sebastopol&amp;rft.pub=O%27Reilly&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite class="citation book">Thompson, Simon (2011). <a rel="nofollow" class="external text" href="http://www.haskellcraft.com/"><i>Haskell: The Craft of Functional Programming</i></a> (3rd ed.). Addison-Wesley. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/0201882957" title="Special:BookSources/0201882957">0201882957</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Simon&amp;rft.aulast=Thompson&amp;rft.btitle=Haskell%3A+The+Craft+of+Functional+Programming&amp;rft.date=2011&amp;rft.edition=3rd&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.haskellcraft.com%2F&amp;rft.isbn=0201882957&amp;rft.pub=Addison-Wesley&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite class="citation book">Lipovača, Miran (April 2011). <a rel="nofollow" class="external text" href="http://learnyouahaskell.com/"><i>Learn You a Haskell for Great Good!</i></a>. San Francisco: No Starch Press. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-59327-283-8" title="Special:BookSources/978-1-59327-283-8">978-1-59327-283-8</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Miran&amp;rft.aulast=Lipova%C4%8Da&amp;rft.btitle=Learn+You+a+Haskell+for+Great+Good%21&amp;rft.date=April+2011&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Flearnyouahaskell.com%2F&amp;rft.isbn=978-1-59327-283-8&amp;rft.place=San+Francisco&amp;rft.pub=No+Starch+Press&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite class="citation book"><a href="/wiki/Richard_Bird_(computer_scientist)" title="Richard Bird (computer scientist)">Bird, Richard</a> (2014). <i>Thinking Functionally with Haskell</i>. Cambridge University Press. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-107-45264-0" title="Special:BookSources/978-1-107-45264-0">978-1-107-45264-0</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=Richard&amp;rft.aulast=Bird&amp;rft.btitle=Thinking+Functionally+with+Haskell&amp;rft.date=2014&amp;rft.genre=book&amp;rft.isbn=978-1-107-45264-0&amp;rft.pub=Cambridge+University+Press&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+</ul>
+<dl>
+<dt>History</dt>
+</dl>
+<ul>
+<li><cite id="CITEREFHudakHughesPeyton_JonesWadler2007" class="citation journal"><a href="/wiki/Paul_Hudak" title="Paul Hudak">Hudak, Paul</a>; <a href="/wiki/John_Hughes_(computer_scientist)" title="John Hughes (computer scientist)">Hughes, John</a>; <a href="/wiki/Simon_Peyton_Jones" title="Simon Peyton Jones">Peyton Jones, Simon</a>; <a href="/wiki/Philip_Wadler" title="Philip Wadler">Wadler, Philip</a> (2007). <a rel="nofollow" class="external text" href="http://research.microsoft.com/~simonpj/papers/history-of-haskell/history.pdf">"A History of Haskell: Being Lazy with Class"</a> <span style="font-size:85%;">(PDF)</span>. <i>Proceedings of the third ACM <a href="/wiki/SIGPLAN" title="SIGPLAN">SIGPLAN</a> conference on History of programming languages (<a href="/wiki/HOPL" title="HOPL" class="mw-redirect">HOPL</a> III)</i>: 12–1–55. <a href="/wiki/Digital_object_identifier" title="Digital object identifier">doi</a>:<a rel="nofollow" class="external text" href="//dx.doi.org/10.1145%2F1238844.1238856">10.1145/1238844.1238856</a>. <a href="/wiki/International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&#160;<a href="/wiki/Special:BookSources/978-1-59593-766-7" title="Special:BookSources/978-1-59593-766-7">978-1-59593-766-7</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=A+History+of+Haskell%3A+Being+Lazy+with+Class&amp;rft.aufirst=Paul&amp;rft.au=Hughes%2C+John&amp;rft.aulast=Hudak&amp;rft.au=Peyton+Jones%2C+Simon&amp;rft.au=Wadler%2C+Philip&amp;rft.date=2007&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fresearch.microsoft.com%2F~simonpj%2Fpapers%2Fhistory-of-haskell%2Fhistory.pdf&amp;rft_id=info%3Adoi%2F10.1145%2F1238844.1238856&amp;rft.isbn=978-1-59593-766-7&amp;rft.jtitle=Proceedings+of+the+third+ACM+SIGPLAN+conference+on+History+of+programming+languages+%28HOPL+III%29&amp;rft.pages=12-1-55&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+</ul>
+<h2><span class="mw-headline" id="External_links">External links</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit&amp;section=17" title="Edit section: External links">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+<table class="metadata plainlinks ambox ambox-style ambox-external_links" role="presentation">
+<tr>
+<td class="mbox-image">
+<div style="width:52px"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/40px-Edit-clear.svg.png" width="40" height="40" srcset="//upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/60px-Edit-clear.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/80px-Edit-clear.svg.png 2x" data-file-width="48" data-file-height="48" /></div>
+</td>
+<td class="mbox-text"><span class="mbox-text-span">This article's <b>use of <a href="/wiki/Wikipedia:External_links" title="Wikipedia:External links">external links</a> may not follow Wikipedia's policies or guidelines</b>. <span class="hide-when-compact">Please <a class="external text" href="//en.wikipedia.org/w/index.php?title=Haskell_(programming_language)&amp;action=edit">improve this article</a> by removing <a href="/wiki/Wikipedia:What_Wikipedia_is_not#Wikipedia_is_not_a_mirror_or_a_repository_of_links.2C_images.2C_or_media_files" title="Wikipedia:What Wikipedia is not">excessive</a> or <a href="/wiki/Wikipedia:External_links" title="Wikipedia:External links">inappropriate</a> external links, and converting useful links where appropriate into <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">footnote references</a>.</span> <small><i>(December 2014)</i></small></span></td>
+</tr>
+</table>
+<table class="mbox-small plainlinks sistersitebox" style="border:1px solid #aaa;background-color:#f9f9f9">
+<tr>
+<td class="mbox-image"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png" width="40" height="40" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/60px-Wikibooks-logo-en-noslogan.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/80px-Wikibooks-logo-en-noslogan.svg.png 2x" data-file-width="400" data-file-height="400" /></td>
+<td class="mbox-text plainlist">Wikibooks has a book on the topic of: <i><b><a href="//en.wikibooks.org/wiki/Haskell" class="extiw" title="wikibooks:Haskell">Haskell</a></b></i></td>
+</tr>
+</table>
+<table class="mbox-small plainlinks sistersitebox" style="border:1px solid #aaa;background-color:#f9f9f9">
+<tr>
+<td class="mbox-image"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png" width="40" height="40" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/60px-Wikibooks-logo-en-noslogan.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/80px-Wikibooks-logo-en-noslogan.svg.png 2x" data-file-width="400" data-file-height="400" /></td>
+<td class="mbox-text plainlist">Wikibooks has a book on the topic of: <i><b><a href="//en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours" class="extiw" title="wikibooks:Write Yourself a Scheme in 48 Hours">Write Yourself a Scheme in 48 Hours</a></b></i></td>
+</tr>
+</table>
+<ul>
+<li><span class="official website"><span class="url"><a rel="nofollow" class="external text" href="http://haskell.org">Official website</a></span></span></li>
+<li><a rel="nofollow" class="external text" href="http://www.haskell.org/haskellwiki/Language_and_library_specification">Language and library specification</a> at the Haskell Wiki</li>
+<li><a rel="nofollow" class="external text" href="https://www.dmoz.org/Computers/Programming/Languages/Haskell">Haskell</a> at <a href="/wiki/DMOZ" title="DMOZ">DMOZ</a></li>
+</ul>
+<dl>
+<dt>Tutorials</dt>
+</dl>
+<ul>
+<li><cite class="citation web">Hudak, Paul; Peterson, John; Fasel, Joseph (June 2000). <a rel="nofollow" class="external text" href="http://haskell.org/tutorial/">"A Gentle Introduction To Haskell, Version 98"</a>. <i>Haskell.org</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.au=Fasel%2C+Joseph&amp;rft.aufirst=Paul&amp;rft.aulast=Hudak&amp;rft.au=Peterson%2C+John&amp;rft.btitle=A+Gentle+Introduction+To+Haskell%2C+Version+98&amp;rft.date=June+2000&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fhaskell.org%2Ftutorial%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><a rel="nofollow" class="external text" href="http://learnyouahaskell.com/">Learn you a Haskell for great good!</a> by Miran Lipovača; assumes no knowledge</li>
+<li><a rel="nofollow" class="external text" href="https://www.fpcomplete.com/school">School of Haskell</a>; online tutorials and courses where the user can run and edit snippets of Haskell code in-place within the FP Haskell Center interactive IDE.</li>
+<li><a rel="nofollow" class="external text" href="http://tryhaskell.org/">Try Haskell!</a>, an in-browser interactive tutorial</li>
+<li><a rel="nofollow" class="external text" href="http://hal3.name/docs/daume02yaht.pdf">Yet Another Haskell Tutorial</a>, by Hal Daumé III; assumes far less prior knowledge than official tutorial</li>
+<li><a rel="nofollow" class="external text" href="http://cheatsheet.codeslower.com/">The Haskell Cheatsheet</a>, compact language reference and mini-tutorial</li>
+<li><a rel="nofollow" class="external text" href="http://www.haskell.org/haskellwiki/Hitchhikers_guide_to_Haskell">Hitchhikers guide to Haskell</a>, a tutorial that guides you through using some complex features in Haskell</li>
+</ul>
+<dl>
+<dt>Books</dt>
+</dl>
+<ul>
+<li><a rel="nofollow" class="external text" href="http://book.realworldhaskell.org">Real World Haskell</a> by Bryan O'Sullivan, Don Stewart, and John Goerzen, published by O'Reilly Media</li>
+<li><a rel="nofollow" class="external text" href="http://denisshevchenko.github.io/ohaskell/en/">About Haskell. Humanly</a></li>
+</ul>
+<dl>
+<dt>Various</dt>
+</dl>
+<ul>
+<li><cite class="citation journal">Yorgey, Brent (12 March 2009). <a rel="nofollow" class="external text" href="http://www.haskell.org/wikiupload/8/85/TMR-Issue13.pdf">"The Typeclassopedia"</a> <span style="font-size:85%;">(PDF)</span>. <i>The Monad.Reader</i> (13): 17–68</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=The+Typeclassopedia&amp;rft.aufirst=Brent&amp;rft.aulast=Yorgey&amp;rft.date=12+March+2009&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww.haskell.org%2Fwikiupload%2F8%2F85%2FTMR-Issue13.pdf&amp;rft.issue=13&amp;rft.jtitle=The+Monad.Reader&amp;rft.pages=17-68&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><cite class="citation book">Jones, William (5 August 2009). <a rel="nofollow" class="external text" href="http://www.doc.ic.ac.uk/teaching/distinguished-projects/2009/w.jones.pdf"><i>Warp Speed Haskell</i></a> <span style="font-size:85%;">(PDF)</span>. <a href="/wiki/Imperial_College_London" title="Imperial College London">Imperial College London</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.aufirst=William&amp;rft.aulast=Jones&amp;rft.btitle=Warp+Speed+Haskell&amp;rft.date=5+August+2009&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.doc.ic.ac.uk%2Fteaching%2Fdistinguished-projects%2F2009%2Fw.jones.pdf&amp;rft.pub=Imperial+College+London&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><a rel="nofollow" class="external text" href="http://www.willamette.edu/~fruehr/haskell/evolution.html">The Evolution of a Haskell Programmer</a>, slightly humorous overview of different programming styles available in Haskell</li>
+<li><a rel="nofollow" class="external text" href="http://haskell.readscheme.org/">Online Bibliography of Haskell Research</a></li>
+<li><a rel="nofollow" class="external text" href="http://contemplatecode.blogspot.com/search/label/HWN">Haskell Weekly News</a></li>
+<li><a rel="nofollow" class="external text" href="http://haskellnews.org/">HaskellNews.org</a></li>
+<li><a rel="nofollow" class="external text" href="http://themonadreader.wordpress.com/">The Monad.Reader</a>, quarterly magazine on Haskell topics</li>
+<li><cite class="citation podcast">Markus (29 August 2008). <a rel="nofollow" class="external text" href="http://www.se-radio.net/2008/08/episode-108-simon-peyton-jones-on-functional-programming-and-haskell/">"Episode 108: Simon Peyton Jones on Functional Programming and Haskell"</a>. <i>Software Engineering Radio</i> (Podcast).</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.btitle=Episode+108%3A+Simon+Peyton+Jones+on+Functional+Programming+and+Haskell&amp;rft.date=29+August+2008&amp;rft.genre=book&amp;rft_id=http%3A%2F%2Fwww.se-radio.net%2F2008%2F08%2Fepisode-108-simon-peyton-jones-on-functional-programming-and-haskell%2F&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+<li><a rel="nofollow" class="external text" href="http://leksah.org/">Leksah</a>, a GTK-based Haskell IDE written in Haskell</li>
+<li><a rel="nofollow" class="external text" href="https://www.fpcomplete.com/business/haskell-center/overview/">FP Haskell Center</a>, web-based Haskell IDE designed by <a rel="nofollow" class="external text" href="https://www.fpcomplete.com/">FP Complete</a>.</li>
+<li><cite class="citation journal">Hamilton, Naomi (19 September 2008). <a rel="nofollow" class="external text" href="http://www.computerworld.com.au/article/261007/a-z_programming_languages_haskell/">"The A-Z of Programming Languages: Haskell"</a>. <i><a href="/wiki/Computerworld" title="Computerworld">Computerworld</a></i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AHaskell+%28programming+language%29&amp;rft.atitle=The+A-Z+of+Programming+Languages%3A+Haskell&amp;rft.aufirst=Naomi&amp;rft.aulast=Hamilton&amp;rft.date=19+September+2008&amp;rft.genre=article&amp;rft_id=http%3A%2F%2Fwww.computerworld.com.au%2Farticle%2F261007%2Fa-z_programming_languages_haskell%2F&amp;rft.jtitle=Computerworld&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal" class="Z3988"><span style="display:none;">&#160;</span></span></li>
+</ul>
+<dl>
+<dt>Applications</dt>
+</dl>
+<ul>
+<li><a rel="nofollow" class="external text" href="http://industry.haskell.org/index">Industrial Haskell Group</a>, collaborative development</li>
+<li><a rel="nofollow" class="external text" href="http://cufp.galois.com/">Commercial Users of Functional Programming</a>, specific projects</li>
+<li><a rel="nofollow" class="external text" href="http://www.haskell.org/haskellwiki/Haskell_in_industry">Haskell in industry</a>, a list of companies using Haskell commercially</li>
+</ul>
+
+
+<!-- 
+NewPP limit report
+Parsed by mw1089
+Cached time: 20150926205232
+Cache expiry: 86400
+Dynamic content: true
+CPU time usage: 0.894 seconds
+Real time usage: 1.016 seconds
+Preprocessor visited node count: 5092/1000000
+Preprocessor generated node count: 0/1500000
+Post‐expand include size: 125181/2097152 bytes
+Template argument size: 14312/2097152 bytes
+Highest expansion depth: 18/40
+Expensive parser function count: 7/500
+Lua time usage: 0.380/10.000 seconds
+Lua memory usage: 5.51 MB/50 MB
+Number of Wikibase entities loaded: 1-->
+
+<!-- 
+Transclusion expansion time report (%,ms,calls,template)
+100.00%  866.995      1 - -total
+ 35.62%  308.834      1 - Template:Reflist
+ 23.70%  205.514      1 - Template:Infobox_programming_language
+ 23.01%  199.457      1 - Template:Infobox
+ 12.11%  104.978     23 - Template:Cite_web
+  8.21%   71.179      1 - Template:Lead_too_short
+  7.09%   61.437     20 - Template:Sfn
+  6.65%   57.670     12 - Template:Cite_book
+  6.63%   57.458      6 - Template:Citation_needed
+  5.54%   48.049      2 - Template:Ambox
+-->
+
+<!-- Saved in parser cache with key enwiki:pcache:idhash:27404990-0!*!0!!en!4!* and timestamp 20150926205231 and revision id 682574392
+ -->
+<noscript><img src="//en.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;" /></noscript></div>         <div class="printfooter">
+            Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Haskell_(programming_language)&amp;oldid=682574392">https://en.wikipedia.org/w/index.php?title=Haskell_(programming_language)&amp;oldid=682574392</a>"          </div>
+        <div id='catlinks' class='catlinks'><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Haskell_programming_language_family" title="Category:Haskell programming language family">Haskell programming language family</a></li><li><a href="/wiki/Category:Academic_programming_languages" title="Category:Academic programming languages">Academic programming languages</a></li><li><a href="/wiki/Category:Educational_programming_languages" title="Category:Educational programming languages">Educational programming languages</a></li><li><a href="/wiki/Category:Functional_languages" title="Category:Functional languages">Functional languages</a></li><li><a href="/wiki/Category:1990_in_computer_science" title="Category:1990 in computer science">1990 in computer science</a></li><li><a href="/wiki/Category:Programming_languages_created_in_1990" title="Category:Programming languages created in 1990">Programming languages created in 1990</a></li><li><a href="/wiki/Category:Pattern_matching_programming_languages" title="Category:Pattern matching programming languages">Pattern matching programming languages</a></li><li><a href="/wiki/Category:Literate_programming" title="Category:Literate programming">Literate programming</a></li><li><a href="/wiki/Category:Statically_typed_programming_languages" title="Category:Statically typed programming languages">Statically typed programming languages</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:CS1_errors:_dates" title="Category:CS1 errors: dates">CS1 errors: dates</a></li><li><a href="/wiki/Category:Wikipedia_introduction_cleanup_from_April_2015" title="Category:Wikipedia introduction cleanup from April 2015">Wikipedia introduction cleanup from April 2015</a></li><li><a href="/wiki/Category:All_pages_needing_cleanup" title="Category:All pages needing cleanup">All pages needing cleanup</a></li><li><a href="/wiki/Category:Articles_covered_by_WikiProject_Wikify_from_April_2015" title="Category:Articles covered by WikiProject Wikify from April 2015">Articles covered by WikiProject Wikify from April 2015</a></li><li><a href="/wiki/Category:All_articles_covered_by_WikiProject_Wikify" title="Category:All articles covered by WikiProject Wikify">All articles covered by WikiProject Wikify</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_February_2012" title="Category:Articles with unsourced statements from February 2012">Articles with unsourced statements from February 2012</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_April_2009" title="Category:Articles with unsourced statements from April 2009">Articles with unsourced statements from April 2009</a></li><li><a href="/wiki/Category:Wikipedia_external_links_cleanup_from_December_2014" title="Category:Wikipedia external links cleanup from December 2014">Wikipedia external links cleanup from December 2014</a></li><li><a href="/wiki/Category:Wikipedia_spam_cleanup_from_December_2014" title="Category:Wikipedia spam cleanup from December 2014">Wikipedia spam cleanup from December 2014</a></li><li><a href="/wiki/Category:Articles_with_DMOZ_links" title="Category:Articles with DMOZ links">Articles with DMOZ links</a></li><li><a href="/wiki/Category:Articles_with_inconsistent_citation_formats" title="Category:Articles with inconsistent citation formats">Articles with inconsistent citation formats</a></li><li><a href="/wiki/Category:Use_dmy_dates_from_March_2012" title="Category:Use dmy dates from March 2012">Use dmy dates from March 2012</a></li><li><a href="/wiki/Category:Articles_with_example_Haskell_code" title="Category:Articles with example Haskell code">Articles with example Haskell code</a></li></ul></div></div>        <div class="visualClear"></div>
+              </div>
+    </div>
+    <div id="mw-navigation">
+      <h2>Navigation menu</h2>
+
+      <div id="mw-head">
+                  <div id="p-personal" role="navigation" class="" aria-labelledby="p-personal-label">
+            <h3 id="p-personal-label">Personal tools</h3>
+            <ul>
+              <li id="pt-createaccount"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Haskell+%28programming+language%29&amp;type=signup" title="You are encouraged to create an account and log in; however, it is not mandatory">Create account</a></li><li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Haskell+%28programming+language%29" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o">Log in</a></li>           </ul>
+          </div>
+                  <div id="left-navigation">
+                    <div id="p-namespaces" role="navigation" class="vectorTabs" aria-labelledby="p-namespaces-label">
+            <h3 id="p-namespaces-label">Namespaces</h3>
+            <ul>
+                              <li  id="ca-nstab-main" class="selected"><span><a href="/wiki/Haskell_(programming_language)"  title="View the content page [c]" accesskey="c">Article</a></span></li>
+                              <li  id="ca-talk"><span><a href="/wiki/Talk:Haskell_(programming_language)"  title="Discussion about the content page [t]" accesskey="t" rel="discussion">Talk</a></span></li>
+                          </ul>
+          </div>
+                    <div id="p-variants" role="navigation" class="vectorMenu emptyPortlet" aria-labelledby="p-variants-label">
+                        <h3 id="p-variants-label">
+              <span>Variants</span><a href="#"></a>
+            </h3>
+
+            <div class="menu">
+              <ul>
+                              </ul>
+            </div>
+          </div>
+                  </div>
+        <div id="right-navigation">
+                    <div id="p-views" role="navigation" class="vectorTabs" aria-labelledby="p-views-label">
+            <h3 id="p-views-label">Views</h3>
+            <ul>
+                              <li id="ca-view" class="selected"><span><a href="/wiki/Haskell_(programming_language)" >Read</a></span></li>
+                              <li id="ca-edit"><span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=edit"  title="Edit this page [e]" accesskey="e">Edit</a></span></li>
+                              <li id="ca-history" class="collapsible"><span><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=history"  title="Past revisions of this page [h]" accesskey="h">View history</a></span></li>
+                          </ul>
+          </div>
+                    <div id="p-cactions" role="navigation" class="vectorMenu emptyPortlet" aria-labelledby="p-cactions-label">
+            <h3 id="p-cactions-label"><span>More</span><a href="#"></a></h3>
+
+            <div class="menu">
+              <ul>
+                              </ul>
+            </div>
+          </div>
+                    <div id="p-search" role="search">
+            <h3>
+              <label for="searchInput">Search</label>
+            </h3>
+
+            <form action="/w/index.php" id="searchform">
+              <div id="simpleSearch">
+              <input type="search" name="search" placeholder="Search" title="Search Wikipedia [f]" accesskey="f" id="searchInput" /><input type="hidden" value="Special:Search" name="title" /><input type="submit" name="fulltext" value="Search" title="Search Wikipedia for this text" id="mw-searchButton" class="searchButton mw-fallbackSearchButton" /><input type="submit" name="go" value="Go" title="Go to a page with this exact name if it exists" id="searchButton" class="searchButton" />              </div>
+            </form>
+          </div>
+                  </div>
+      </div>
+      <div id="mw-panel">
+        <div id="p-logo" role="banner"><a class="mw-wiki-logo" href="/wiki/Main_Page"  title="Visit the main page"></a></div>
+            <div class="portal" role="navigation" id='p-navigation' aria-labelledby='p-navigation-label'>
+      <h3 id='p-navigation-label'>Navigation</h3>
+
+      <div class="body">
+                  <ul>
+            <li id="n-mainpage-description"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a></li><li id="n-contents"><a href="/wiki/Portal:Contents" title="Guides to browsing Wikipedia">Contents</a></li><li id="n-featuredcontent"><a href="/wiki/Portal:Featured_content" title="Featured content – the best of Wikipedia">Featured content</a></li><li id="n-currentevents"><a href="/wiki/Portal:Current_events" title="Find background information on current events">Current events</a></li><li id="n-randompage"><a href="/wiki/Special:Random" title="Load a random article [x]" accesskey="x">Random article</a></li><li id="n-sitesupport"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en" title="Support us">Donate to Wikipedia</a></li><li id="n-shoplink"><a href="//shop.wikimedia.org" title="Visit the Wikipedia store">Wikipedia store</a></li>         </ul>
+              </div>
+    </div>
+      <div class="portal" role="navigation" id='p-interaction' aria-labelledby='p-interaction-label'>
+      <h3 id='p-interaction-label'>Interaction</h3>
+
+      <div class="body">
+                  <ul>
+            <li id="n-help"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia">Help</a></li><li id="n-aboutsite"><a href="/wiki/Wikipedia:About" title="Find out about Wikipedia">About Wikipedia</a></li><li id="n-portal"><a href="/wiki/Wikipedia:Community_portal" title="About the project, what you can do, where to find things">Community portal</a></li><li id="n-recentchanges"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li><li id="n-contactpage"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia">Contact page</a></li>         </ul>
+              </div>
+    </div>
+      <div class="portal" role="navigation" id='p-tb' aria-labelledby='p-tb-label'>
+      <h3 id='p-tb-label'>Tools</h3>
+
+      <div class="body">
+                  <ul>
+            <li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/Haskell_(programming_language)" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j">What links here</a></li><li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/Haskell_(programming_language)" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li><li id="t-upload"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u">Upload file</a></li><li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li><li id="t-permalink"><a href="/w/index.php?title=Haskell_(programming_language)&amp;oldid=682574392" title="Permanent link to this revision of the page">Permanent link</a></li><li id="t-info"><a href="/w/index.php?title=Haskell_(programming_language)&amp;action=info" title="More information about this page">Page information</a></li><li id="t-wikibase"><a href="//www.wikidata.org/wiki/Q34010" title="Link to connected data repository item [g]" accesskey="g">Wikidata item</a></li><li id="t-cite"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=Haskell_%28programming_language%29&amp;id=682574392" title="Information on how to cite this page">Cite this page</a></li>          </ul>
+              </div>
+    </div>
+      <div class="portal" role="navigation" id='p-coll-print_export' aria-labelledby='p-coll-print_export-label'>
+      <h3 id='p-coll-print_export-label'>Print/export</h3>
+
+      <div class="body">
+                  <ul>
+            <li id="coll-create_a_book"><a href="/w/index.php?title=Special:Book&amp;bookcmd=book_creator&amp;referer=Haskell+%28programming+language%29">Create a book</a></li><li id="coll-download-as-rdf2latex"><a href="/w/index.php?title=Special:Book&amp;bookcmd=render_article&amp;arttitle=Haskell+%28programming+language%29&amp;returnto=Haskell+%28programming+language%29&amp;oldid=682574392&amp;writer=rdf2latex">Download as PDF</a></li><li id="t-print"><a href="/w/index.php?title=Haskell_(programming_language)&amp;printable=yes" title="Printable version of this page [p]" accesskey="p">Printable version</a></li>          </ul>
+              </div>
+    </div>
+      <div class="portal" role="navigation" id='p-lang' aria-labelledby='p-lang-label'>
+      <h3 id='p-lang-label'>Languages</h3>
+
+      <div class="body">
+                  <ul>
+            <li class="interlanguage-link interwiki-ar"><a href="//ar.wikipedia.org/wiki/%D9%87%D8%A7%D8%B3%D9%83%D9%84_(%D9%84%D8%BA%D8%A9_%D8%A8%D8%B1%D9%85%D8%AC%D8%A9)" title="هاسكل (لغة برمجة) – Arabic" lang="ar" hreflang="ar">العربية</a></li><li class="interlanguage-link interwiki-az"><a href="//az.wikipedia.org/wiki/Haskell_(proqramla%C5%9Fd%C4%B1rma_dili)" title="Haskell (proqramlaşdırma dili) – Azerbaijani" lang="az" hreflang="az">Azərbaycanca</a></li><li class="interlanguage-link interwiki-bg"><a href="//bg.wikipedia.org/wiki/Haskell" title="Haskell – Bulgarian" lang="bg" hreflang="bg">Български</a></li><li class="interlanguage-link interwiki-ca"><a href="//ca.wikipedia.org/wiki/Haskell" title="Haskell – Catalan" lang="ca" hreflang="ca">Català</a></li><li class="interlanguage-link interwiki-cs"><a href="//cs.wikipedia.org/wiki/Haskell_(programovac%C3%AD_jazyk)" title="Haskell (programovací jazyk) – Czech" lang="cs" hreflang="cs">Čeština</a></li><li class="interlanguage-link interwiki-da"><a href="//da.wikipedia.org/wiki/Haskell_(programmeringssprog)" title="Haskell (programmeringssprog) – Danish" lang="da" hreflang="da">Dansk</a></li><li class="interlanguage-link interwiki-de"><a href="//de.wikipedia.org/wiki/Haskell_(Programmiersprache)" title="Haskell (Programmiersprache) – German" lang="de" hreflang="de">Deutsch</a></li><li class="interlanguage-link interwiki-et"><a href="//et.wikipedia.org/wiki/Haskell" title="Haskell – Estonian" lang="et" hreflang="et">Eesti</a></li><li class="interlanguage-link interwiki-el"><a href="//el.wikipedia.org/wiki/Haskell" title="Haskell – Greek" lang="el" hreflang="el">Ελληνικά</a></li><li class="interlanguage-link interwiki-es"><a href="//es.wikipedia.org/wiki/Haskell" title="Haskell – Spanish" lang="es" hreflang="es">Español</a></li><li class="interlanguage-link interwiki-eo"><a href="//eo.wikipedia.org/wiki/Haskell" title="Haskell – Esperanto" lang="eo" hreflang="eo">Esperanto</a></li><li class="interlanguage-link interwiki-fa"><a href="//fa.wikipedia.org/wiki/%D9%87%D8%B3%DA%A9%D9%84_(%D8%B2%D8%A8%D8%A7%D9%86_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C)" title="هسکل (زبان برنامه‌نویسی) – Persian" lang="fa" hreflang="fa">فارسی</a></li><li class="interlanguage-link interwiki-fr"><a href="//fr.wikipedia.org/wiki/Haskell" title="Haskell – French" lang="fr" hreflang="fr">Français</a></li><li class="interlanguage-link interwiki-gl"><a href="//gl.wikipedia.org/wiki/Haskell" title="Haskell – Galician" lang="gl" hreflang="gl">Galego</a></li><li class="interlanguage-link interwiki-ko"><a href="//ko.wikipedia.org/wiki/%ED%95%98%EC%8A%A4%EC%BC%88" title="하스켈 – Korean" lang="ko" hreflang="ko">한국어</a></li><li class="interlanguage-link interwiki-hr"><a href="//hr.wikipedia.org/wiki/Haskell_(programski_jezik)" title="Haskell (programski jezik) – Croatian" lang="hr" hreflang="hr">Hrvatski</a></li><li class="interlanguage-link interwiki-id"><a href="//id.wikipedia.org/wiki/Haskell" title="Haskell – Indonesian" lang="id" hreflang="id">Bahasa Indonesia</a></li><li class="interlanguage-link interwiki-is"><a href="//is.wikipedia.org/wiki/Haskell_(forritunarm%C3%A1l)" title="Haskell (forritunarmál) – Icelandic" lang="is" hreflang="is">Íslenska</a></li><li class="interlanguage-link interwiki-it"><a href="//it.wikipedia.org/wiki/Haskell_(linguaggio)" title="Haskell (linguaggio) – Italian" lang="it" hreflang="it">Italiano</a></li><li class="interlanguage-link interwiki-he"><a href="//he.wikipedia.org/wiki/Haskell" title="Haskell – Hebrew" lang="he" hreflang="he">עברית</a></li><li class="interlanguage-link interwiki-kk"><a href="//kk.wikipedia.org/wiki/%D0%9C%D3%99%D1%82%D1%96%D0%BD%D0%B4%D1%96_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D1%82%D1%8B_%D3%A9%D2%A3%D0%B4%D0%B5%D1%83" title="Мәтінді автоматты өңдеу – Kazakh" lang="kk" hreflang="kk">Қазақша</a></li><li class="interlanguage-link interwiki-la"><a href="//la.wikipedia.org/wiki/Haskell" title="Haskell – Latin" lang="la" hreflang="la">Latina</a></li><li class="interlanguage-link interwiki-lv"><a href="//lv.wikipedia.org/wiki/Haskell" title="Haskell – Latvian" lang="lv" hreflang="lv">Latviešu</a></li><li class="interlanguage-link interwiki-lb"><a href="//lb.wikipedia.org/wiki/Haskell_(Programm%C3%A9iersprooch)" title="Haskell (Programméiersprooch) – Luxembourgish" lang="lb" hreflang="lb">Lëtzebuergesch</a></li><li class="interlanguage-link interwiki-hu"><a href="//hu.wikipedia.org/wiki/Haskell_(programoz%C3%A1si_nyelv)" title="Haskell (programozási nyelv) – Hungarian" lang="hu" hreflang="hu">Magyar</a></li><li class="interlanguage-link interwiki-mr"><a href="//mr.wikipedia.org/wiki/%E0%A4%B9%E0%A5%85%E0%A4%B8%E0%A5%8D%E0%A4%95%E0%A5%87%E0%A4%B2_(%E0%A4%AA%E0%A5%8D%E0%A4%B0%E0%A5%8B%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A5%85%E0%A4%AE%E0%A4%BF%E0%A4%82%E0%A4%97_%E0%A4%AD%E0%A4%BE%E0%A4%B7%E0%A4%BE)" title="हॅस्केल (प्रोग्रॅमिंग भाषा) – Marathi" lang="mr" hreflang="mr">मराठी</a></li><li class="interlanguage-link interwiki-ms"><a href="//ms.wikipedia.org/wiki/Haskell" title="Haskell – Malay" lang="ms" hreflang="ms">Bahasa Melayu</a></li><li class="interlanguage-link interwiki-nl"><a href="//nl.wikipedia.org/wiki/Haskell_(programmeertaal)" title="Haskell (programmeertaal) – Dutch" lang="nl" hreflang="nl">Nederlands</a></li><li class="interlanguage-link interwiki-ja"><a href="//ja.wikipedia.org/wiki/Haskell" title="Haskell – Japanese" lang="ja" hreflang="ja">日本語</a></li><li class="interlanguage-link interwiki-no"><a href="//no.wikipedia.org/wiki/Haskell" title="Haskell – Norwegian" lang="no" hreflang="no">Norsk bokmål</a></li><li class="interlanguage-link interwiki-pl"><a href="//pl.wikipedia.org/wiki/Haskell" title="Haskell – Polish" lang="pl" hreflang="pl">Polski</a></li><li class="interlanguage-link interwiki-pt"><a href="//pt.wikipedia.org/wiki/Haskell_(linguagem_de_programa%C3%A7%C3%A3o)" title="Haskell (linguagem de programação) – Portuguese" lang="pt" hreflang="pt">Português</a></li><li class="interlanguage-link interwiki-ro"><a href="//ro.wikipedia.org/wiki/Haskell" title="Haskell – Romanian" lang="ro" hreflang="ro">Română</a></li><li class="interlanguage-link interwiki-ru"><a href="//ru.wikipedia.org/wiki/Haskell" title="Haskell – Russian" lang="ru" hreflang="ru">Русский</a></li><li class="interlanguage-link interwiki-simple"><a href="//simple.wikipedia.org/wiki/Haskell_(programming_language)" title="Haskell (programming language) – Simple English" lang="simple" hreflang="simple">Simple English</a></li><li class="interlanguage-link interwiki-sk"><a href="//sk.wikipedia.org/wiki/Haskell_(programovac%C3%AD_jazyk)" title="Haskell (programovací jazyk) – Slovak" lang="sk" hreflang="sk">Slovenčina</a></li><li class="interlanguage-link interwiki-sl"><a href="//sl.wikipedia.org/wiki/Haskell" title="Haskell – Slovenian" lang="sl" hreflang="sl">Slovenščina</a></li><li class="interlanguage-link interwiki-fi"><a href="//fi.wikipedia.org/wiki/Haskell" title="Haskell – Finnish" lang="fi" hreflang="fi">Suomi</a></li><li class="interlanguage-link interwiki-sv"><a href="//sv.wikipedia.org/wiki/Haskell_(programspr%C3%A5k)" title="Haskell (programspråk) – Swedish" lang="sv" hreflang="sv">Svenska</a></li><li class="interlanguage-link interwiki-tg"><a href="//tg.wikipedia.org/wiki/Haskell" title="Haskell – Tajik" lang="tg" hreflang="tg">Тоҷикӣ</a></li><li class="interlanguage-link interwiki-tr"><a href="//tr.wikipedia.org/wiki/Haskell" title="Haskell – Turkish" lang="tr" hreflang="tr">Türkçe</a></li><li class="interlanguage-link interwiki-uk"><a href="//uk.wikipedia.org/wiki/Haskell" title="Haskell – Ukrainian" lang="uk" hreflang="uk">Українська</a></li><li class="interlanguage-link interwiki-vi"><a href="//vi.wikipedia.org/wiki/Haskell_(ng%C3%B4n_ng%E1%BB%AF_l%E1%BA%ADp_tr%C3%ACnh)" title="Haskell (ngôn ngữ lập trình) – Vietnamese" lang="vi" hreflang="vi">Tiếng Việt</a></li><li class="interlanguage-link interwiki-zh"><a href="//zh.wikipedia.org/wiki/Haskell" title="Haskell – Chinese" lang="zh" hreflang="zh">中文</a></li><li class="uls-p-lang-dummy"><a href="#"></a></li>          </ul>
+        <div class='after-portlet after-portlet-lang'><span class="wb-langlinks-edit wb-langlinks-link"><a href="//www.wikidata.org/wiki/Q34010#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div>      </div>
+    </div>
+        </div>
+    </div>
+    <div id="footer" role="contentinfo">
+              <ul id="footer-info">
+                      <li id="footer-info-lastmod"> This page was last modified on 24 September 2015, at 15:52.</li>
+                      <li id="footer-info-copyright">Text is available under the <a rel="license" href="//en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License">Creative Commons Attribution-ShareAlike License</a><a rel="license" href="//creativecommons.org/licenses/by-sa/3.0/" style="display:none;"></a>;
+additional terms may apply.  By using this site, you agree to the <a href="//wikimediafoundation.org/wiki/Terms_of_Use">Terms of Use</a> and <a href="//wikimediafoundation.org/wiki/Privacy_policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a href="//www.wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li>
+                  </ul>
+              <ul id="footer-places">
+                      <li id="footer-places-privacy"><a href="//wikimediafoundation.org/wiki/Privacy_policy" title="wikimedia:Privacy policy">Privacy policy</a></li>
+                      <li id="footer-places-about"><a href="/wiki/Wikipedia:About" title="Wikipedia:About">About Wikipedia</a></li>
+                      <li id="footer-places-disclaimer"><a href="/wiki/Wikipedia:General_disclaimer" title="Wikipedia:General disclaimer">Disclaimers</a></li>
+                      <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li>
+                      <li id="footer-places-developers"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/How_to_contribute">Developers</a></li>
+                      <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Haskell_(programming_language)&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li>
+                  </ul>
+                    <ul id="footer-icons" class="noprint">
+                      <li id="footer-copyrightico">
+              <a href="//wikimediafoundation.org/"><img src="/static/images/wikimedia-button.png" srcset="/static/images/wikimedia-button-1.5x.png 1.5x, /static/images/wikimedia-button-2x.png 2x" width="88" height="31" alt="Wikimedia Foundation"/></a>           </li>
+                      <li id="footer-poweredbyico">
+              <a href="//www.mediawiki.org/"><img src="/static/1.26wmf24/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/static/1.26wmf24/resources/assets/poweredby_mediawiki_132x47.png 1.5x, /static/1.26wmf24/resources/assets/poweredby_mediawiki_176x62.png 2x" width="88" height="31" /></a>           </li>
+                  </ul>
+            <div style="clear:both"></div>
+    </div>
+    <script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {
+mw.loader.state({"ext.globalCssJs.site":"ready","ext.globalCssJs.user":"ready","user":"ready","user.groups":"ready"});
+} );</script>
+<link rel="stylesheet" href="/w/load.php?debug=false&amp;lang=en&amp;modules=ext.cite.styles%7Cext.gadget.DRN-wizard%2CReferenceTooltips%2Ccharinsert%2Cfeatured-articles-links%2CrefToolbar%2Cswitcher%2Cteahouse%7Cext.wikimediaBadges&amp;only=styles&amp;skin=vector" />
+<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {
+mw.loader.load(["ext.cite.a11y","mediawiki.toc","mediawiki.action.view.postEdit","site","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest","mmv.bootstrap.autostart","ext.eventLogging.subscriber","ext.wikimediaEvents","ext.wikimediaEvents.geoFeatures","ext.navigationTiming","ext.gadget.teahouse","ext.gadget.ReferenceTooltips","ext.gadget.DRN-wizard","ext.gadget.charinsert","ext.gadget.refToolbar","ext.gadget.switcher","ext.gadget.featured-articles-links","ext.visualEditor.targetLoader","schema.UniversalLanguageSelector","ext.uls.eventlogger","ext.uls.interlanguage"]);
+} );</script><script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {
+mw.config.set({"wgBackendResponseTime":1150,"wgHostname":"mw1089"});
+} );</script>
+  </body>
+</html>
+