God I hate the term \"code smell\", but I can\'t think of anything more accurate.
I\'m designing a high-level language & compiler to Whitespace in my spare time
It's possible that you may want an applicative functor instead of a monad:
http://www.haskell.org/haskellwiki/Applicative_functor
I think the original paper explains it better than the wiki, however:
http://www.soi.city.ac.uk/~ross/papers/Applicative.html