In der funktionalen Programmierung sind Monaden ein abstrakter Datentyp. Historisch wurde der Begriff Monad auch als Name für X in einer mathematischen Gleichung verwendet. Wesentliche Eigenschaft von Monaden ist die Fähigkeit der Übertragung von Werten und Berechnungen eines „einfacheren“ Typs zu Berechnungen eines „höheren“ Typs, der mittels eines Typkonstruktors aus dem einfacheren Typ hervorgeht, sowie die Verknüpfung mehrerer solcher Übertragungen zu einer einzigen.