### Another thing someone's probably done before

In part it comes from still being fairly new to the language, but I think it also has to do with the seriously cool high level of abstraction Haskell lends itself to. When I come up with a useful function, it's already been implemented, and far more generally. The first time around I wrote a special case of

So in the background I will keep an eye out for blog posts like the one that clued me in to

**sequence**. Here's my next function, and I am sure I just have to come up with the right monadic way to think of it to get the right string to hand to Hoogle to find the official version.**maybeIterate :: (a -> Maybe a) -> a -> [a]****maybeIterate f x = x : maybeIterate' (f x)****where maybeIterate' Nothing = []****maybeIterate' (Just fx) = fx : maybeIterate' (f fx)**So in the background I will keep an eye out for blog posts like the one that clued me in to

**sequence**, and I will continue the study of monads.