En programación funcional, una mónada se define mediante la siguiente type class.
class Monada m where
return :: a -> m a
(>>=) :: m a -> (a -> m b) -> m bRecordemos que las type classes definen un conjunto de operaciones que un tipo debe implementar; son similares a las interfaces en la programación orientada a objetos y permiten el polimorfismo y la reutilización de código.