<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Chapters - Learn You a Haskell for Great Good!</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<base href="">
<style type="text/css">
	@import url('reset.css');
	@import url('style.css');
</style>
<link rel="shortcut icon" href="favicon.png" type="image/png">
<link type="text/css" rel="stylesheet" href="sh/Styles/SyntaxHighlighter.css">
<link href="rss.php" rel="alternate" type="application/rss+xml" title="Learn You a Haskell for Great Good! feed">
</head>
<body class="introcontent">
<div class="bgwrapper">
    <div id="content">
        <h1>Learn You a Haskell for Great Good!</h1>
<p>
    <ol class="chapters">
            <li>
            <a href="introduction">Introduction</a>
            <ul>
                                    <li><a href="introduction#about-this-tutorial">About this tutorial</a></li>  
                                    <li><a href="introduction#so-whats-haskell">So what's Haskell?</a></li>  
                                    <li><a href="introduction#what-you-need">What you need to dive in</a></li>  
                            </ul>
        </li>
            <li>
            <a href="starting-out">Starting Out</a>
            <ul>
                                    <li><a href="starting-out#ready-set-go">Ready, set, go!</a></li>  
                                    <li><a href="starting-out#babys-first-functions">Baby's first functions</a></li>  
                                    <li><a href="starting-out#an-intro-to-lists">An intro to lists</a></li>  
                                    <li><a href="starting-out#texas-ranges">Texas ranges</a></li>  
                                    <li><a href="starting-out#im-a-list-comprehension">I'm a list comprehension</a></li>  
                                    <li><a href="starting-out#tuples">Tuples</a></li>  
                            </ul>
        </li>
            <li>
            <a href="types-and-typeclasses">Types and Typeclasses</a>
            <ul>
                                    <li><a href="types-and-typeclasses#believe-the-type">Believe the type</a></li>  
                                    <li><a href="types-and-typeclasses#type-variables">Type variables</a></li>  
                                    <li><a href="types-and-typeclasses#typeclasses-101">Typeclasses 101</a></li>  
                            </ul>
        </li>
            <li>
            <a href="syntax-in-functions">Syntax in Functions</a>
            <ul>
                                    <li><a href="syntax-in-functions#pattern-matching">Pattern matching</a></li>  
                                    <li><a href="syntax-in-functions#guards-guards">Guards, guards!</a></li>  
                                    <li><a href="syntax-in-functions#where">Where!?</a></li>  
                                    <li><a href="syntax-in-functions#let-it-be">Let it be</a></li>  
                                    <li><a href="syntax-in-functions#case-expressions">Case expressions</a></li>  
                            </ul>
        </li>
            <li>
            <a href="recursion">Recursion</a>
            <ul>
                                    <li><a href="recursion#hello-recursion">Hello recursion!</a></li>  
                                    <li><a href="recursion#maximum-awesome">Maximum awesome</a></li>  
                                    <li><a href="recursion#a-few-more-recursive-functions">A few more recursive functions</a></li>  
                                    <li><a href="recursion#quick-sort">Quick, sort!</a></li>  
                                    <li><a href="recursion#thinking-recursively">Thinking recursively</a></li>  
                            </ul>
        </li>
            <li>
            <a href="higher-order-functions">Higher Order Functions</a>
            <ul>
                                    <li><a href="higher-order-functions#curried-functions">Curried functions</a></li>  
                                    <li><a href="higher-order-functions#higher-orderism">Some higher-orderism is in order</a></li>  
                                    <li><a href="higher-order-functions#maps-and-filters">Maps and filters</a></li>  
                                    <li><a href="higher-order-functions#lambdas">Lambdas</a></li>  
                                    <li><a href="higher-order-functions#folds">Only folds and horses</a></li>  
                                    <li><a href="higher-order-functions#function-application">Function application with $</a></li>  
                                    <li><a href="higher-order-functions#composition">Function composition</a></li>  
                            </ul>
        </li>
            <li>
            <a href="modules">Modules</a>
            <ul>
                                    <li><a href="modules#loading-modules">Loading modules</a></li>  
                                    <li><a href="modules#data-list">Data.List</a></li>  
                                    <li><a href="modules#data-char">Data.Char</a></li>  
                                    <li><a href="modules#data-map">Data.Map</a></li>  
                                    <li><a href="modules#data-set">Data.Set</a></li>  
                                    <li><a href="modules#making-our-own-modules">Making our own modules</a></li>  
                            </ul>
        </li>
            <li>
            <a href="making-our-own-types-and-typeclasses">Making Our Own Types and Typeclasses</a>
            <ul>
                                    <li><a href="making-our-own-types-and-typeclasses#algebraic-data-types">Algebraic data types intro</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#record-syntax">Record syntax</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#type-parameters">Type parameters</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#derived-instances">Derived instances</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#type-synonyms">Type synonyms</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#recursive-data-structures">Recursive data structures</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#typeclasses-102">Typeclasses 102</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#a-yes-no-typeclass">A yes-no typeclass</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#the-functor-typeclass">The Functor typeclass</a></li>  
                                    <li><a href="making-our-own-types-and-typeclasses#kinds-and-some-type-foo">Kinds and some type-foo</a></li>  
                            </ul>
        </li>
            <li>
            <a href="input-and-output">Input and Output</a>
            <ul>
                                    <li><a href="input-and-output#hello-world">Hello, world!</a></li>  
                                    <li><a href="input-and-output#files-and-streams">Files and streams</a></li>  
                                    <li><a href="input-and-output#command-line-arguments">Command line arguments</a></li>  
                                    <li><a href="input-and-output#randomness">Randomness</a></li>  
                                    <li><a href="input-and-output#bytestrings">Bytestrings</a></li>  
                                    <li><a href="input-and-output#exceptions">Exceptions</a></li>  
                            </ul>
        </li>
            <li>
            <a href="functionally-solving-problems">Functionally Solving Problems</a>
            <ul>
                                    <li><a href="functionally-solving-problems#reverse-polish-notation-calculator">Reverse Polish notation calculator</a></li>  
                                    <li><a href="functionally-solving-problems#heathrow-to-london">Heathrow to London</a></li>  
                            </ul>
        </li>
            <li>
            <a href="functors-applicative-functors-and-monoids">Functors, Applicative Functors and Monoids</a>
            <ul>
                                    <li><a href="functors-applicative-functors-and-monoids#functors-redux">Functors redux</a></li>  
                                    <li><a href="functors-applicative-functors-and-monoids#applicative-functors">Applicative functors</a></li>  
                                    <li><a href="functors-applicative-functors-and-monoids#the-newtype-keyword">The newtype keyword</a></li>  
                                    <li><a href="functors-applicative-functors-and-monoids#monoids">Monoids</a></li>  
                            </ul>
        </li>
            <li>
            <a href="a-fistful-of-monads">A Fistful of Monads</a>
            <ul>
                                    <li><a href="a-fistful-of-monads#getting-our-feet-wet-with-maybe">Getting our feet wet with Maybe</a></li>  
                                    <li><a href="a-fistful-of-monads#the-monad-type-class">The Monad type class</a></li>  
                                    <li><a href="a-fistful-of-monads#walk-the-line">Walk the line</a></li>  
                                    <li><a href="a-fistful-of-monads#do-notation">do notation</a></li>  
                                    <li><a href="a-fistful-of-monads#the-list-monad">The list monad</a></li>  
                                    <li><a href="a-fistful-of-monads#monad-laws">Monad laws</a></li>  
                            </ul>
        </li>
            <li>
            <a href="for-a-few-monads-more">For a Few Monads More</a>
            <ul>
                                    <li><a href="for-a-few-monads-more#writer">Writer? I hardly know her!</a></li>  
                                    <li><a href="for-a-few-monads-more#reader">Reader? Ugh, not this joke again.</a></li>  
                                    <li><a href="for-a-few-monads-more#state">Tasteful stateful computations</a></li>  
                                    <li><a href="for-a-few-monads-more#error">Error error on the wall</a></li>  
                                    <li><a href="for-a-few-monads-more#useful-monadic-functions">Some useful monadic functions</a></li>  
                                    <li><a href="for-a-few-monads-more#making-monads">Making monads</a></li>  
                            </ul>
        </li>
            <li>
            <a href="zippers">Zippers</a>
            <ul>
                                    <li><a href="zippers#taking-a-walk">Taking a walk</a></li>  
                                    <li><a href="zippers#a-trail-of-breadcrumbs">A trail of breadcrumbs</a></li>  
                                    <li><a href="zippers#focusing-on-lists">Focusing on lists</a></li>  
                                    <li><a href="zippers#a-very-simple-file-system">A very simple file system</a></li>  
                                    <li><a href="zippers#watch-your-step">Watch your step</a></li>  
                            </ul>
        </li>
        </ol>
    <p>
    This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="nofollow">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a> because I couldn't find a license with an even longer name. 
    </p>
        </div>
    <script type="text/javascript" src="sh/Scripts/shCore.js"></script>
    <script type="text/javascript" src="shBrushHaskell.js"></script>
    <script type="text/javascript" src="shBrushPlain.js"></script>
    <script type="text/javascript">
    dp.SyntaxHighlighter.ClipboardSwf = '/sh/Scripts/clipboard.swf';
    dp.SyntaxHighlighter.HighlightAll('code', false, false, false, 1, false);
    </script>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4461592-3");
pageTracker._trackPageview();
</script>
</body>
</html>
