typo
authorjim <jim@web>
Mon, 23 Mar 2015 14:27:45 +0000 (10:27 -0400)
committerLinux User <ikiwiki@localhost.members.linode.com>
Mon, 23 Mar 2015 14:27:45 +0000 (10:27 -0400)
topics/week7_introducing_monads.mdwn

index 49993ff..7a7222e 100644 (file)
@@ -382,7 +382,7 @@ That can be helpful, but it only enables us to have _zero or one_ elements in th
       | [] -> []
       | x' :: xs' -> List.append (k x') (catmap f 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 cs)` 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.
+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.
 
 This example is a good intuitive basis for thinking about the notions of `mbind` and `mcomp` more generally. Thus `mbind` for the option/Maybe type takes an option value, applies `k` to its element (if there is one), and returns the resulting option value. `mbind` for a tree with `α`-labeled leaves would apply `k` to each of the leaves, and return a tree containing arbitrarily large subtrees in place of all its former leaves, depending on what `k` returned.