Lesson 32. The list monad and list comprehensions

After reading lesson 32, you’ll be able to

  • Use do-notation to generate lists
  • Filter results in do-notation by using guard
  • Further simplify do-notation with list comprehensions

At the end of the preceding lesson, you saw that List is an instance of Monad. You saw only a simple example of using List as a Monad to process a list of candidates.

Listing 32.1. The assessCandidateList function from the previous lesson
assessCandidateList :: [Candidate] -> [String]
assessCandidateList candidates = do
   candidate <- candidates                        1
   let passed = viable candidate                  2
   let statement = if passed                      3
                   then "passed"
                   else "failed"
   return statement                               4
  • 1 By using <- , you’re able to treat your list of candidates like ...

Get Get Programming with Haskell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.