From: jim Date: Wed, 25 Mar 2015 20:09:40 +0000 (-0400) Subject: typo, thanks Kyle X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=commitdiff_plain;h=87a14c80b60d2edf6f188b5c17adefa6e50b432a typo, thanks Kyle --- diff --git a/topics/week7_introducing_monads.mdwn b/topics/week7_introducing_monads.mdwn index c778bb7e..06dd06e3 100644 --- a/topics/week7_introducing_monads.mdwn +++ b/topics/week7_introducing_monads.mdwn @@ -380,7 +380,7 @@ That can be helpful, but it only enables us to have _zero or one_ elements in th let rec catmap (k : α -> β list) (xs : α list) : β list = match xs with | [] -> [] - | x' :: xs' -> List.append (k x') (catmap f xs') + | x' :: xs' -> List.append (k x') (catmap k xs') Now we can have as many elements in the result for a given `α` as `k` cares to return. Another way to write `catmap k xs` is as (Haskell) `concat (map k xs)` or (OCaml) `List.flatten (List.map k xs)`. And this is just the definition of `mbind` or `>>=` for the List Monad. The definition of `mcomp` or `<=<`, that we gave above, differs only in that it's the way to compose two functions `j` and `k`, that you'd want to `catmap`, rather than the way to `catmap` one of those functions over a value that's already a list.