monads take a value and hide it's gory implementation details behind a monad operator