In a recent blog post about a probability monad he'd written, Mark Dominus wrote, "So I feel like I've finally arrived, monadwise."
My first monadic program was an awkward solution to Problem 32 from Project Euler using parsec and the Maybe monad.
What were you working on when the light finally turned on for you? Provide at least a sketch of the code you wrote. Knowing what you know now, how would you improve it and why?