-
IntroductionAbout this tutorial Welcome to Learn You a Haskell for Great Good! If you're reading this, chances are you want to lea
-
Starting OutReady, set, go! img Alright, let's get started! If you're the sort of horrible person who doesn't read introductions to
-
Types and TypeclassesBelieve the type img Previously we mentioned that Haskell has a static type system. The type of every expression is know
-
Syntax in FunctionsPattern matching img This chapter will cover some of Haskell's cool syntactic constructs and we'll start with pattern ma
-
RecursionHello recursion! img We mention recursion briefly in the previous chapter. In this chapter, we'll take a closer look at
-
Higher Order Functionsimg Haskell functions can take functions as parameters and return functions as return values. A function that does eithe
-
ModulesLoading modules img A Haskell module is a collection of related functions, types and typeclasses. A Haskell program is a
-
Making Our Own Types and TypeclassesIn the previous chapters, we covered some existing Haskell types and typeclasses. In this chapter, we'll learn how to ma
-
Input and Outputimg We've mentioned that Haskell is a purely functional language. Whereas in imperative languages you usually get things
-
Functionally Solving ProblemsIn this chapter, we'll take a look at a few interesting problems and how to think functionally to solve them as elegantl
-
Functors, Applicative Functors and MonoidsHaskell's combination of purity, higher order functions, parameterized algebraic data types, and typeclasses allows us t
-
A Fistful of MonadsWhen we first talked about functors, we saw that they were a useful concept for values that can be mapped over. Then, w
-
For a Few Monads Moreimg We've seen how monads can be used to take values with contexts and apply them to functions and how using >>= or do
-
Zippersimg While Haskell's purity comes with a whole bunch of benefits, it makes us tackle some problems differently than we