### Someone has done this before...

Happened across it while looking for Haskell-related blogs to link to: from Derek Wyatt's blog, a post titled "Haskell sequence over functions -- explained" gives this example:

gives the result we would get from our

What is this

If

So, our functions must have the type

Aha. That reminds me of the exercise in Typeclassopedia: show that

Unfortunately, we have dueling definitions here. M…

**sequence [(> 4), (< 10), odd] 7**gives the result we would get from our

**wonkyMap**with the same arguments:**[True, True, True]**What is this

**sequence**?**:t sequence****sequence :: Monad m => [m a] -> m [a]**If

**m**is a monad, then**sequence**will map a**[m a]**to a**m [a]**.So, our functions must have the type

**m a**for some**m**and**a**. Let's inquire with ghci once again.**:t sequence [(> 4), (< 10), odd]****sequence [(> 4), (< 10), odd] :: Integral a => a -> [Bool]**Aha. That reminds me of the exercise in Typeclassopedia: show that

**(->) r**is a functor. (WTF? That's the type of functions that take an argument of type**r**.) Turns out that not only is it a functor, it's a monad; Typeclassopedia refers to it as the "reader monad".Unfortunately, we have dueling definitions here. M…