Haskell to funkcyjny język programowania nazwany na cześć Haskella Currego. Jego specyficzne cechy to m.in. leniwe wartościowanie, monady , statyczny polimorfizm, klasy typów, definiowalne operatory (również możliwość tworzenia nowych), strażnicy, wbudowane wsparcie dla literate programming.
źródło: NKJP: Internet
Monada obowiązkowo musi definiować dwie operacje, nazywane najczęściej return (włożenie wartości do kontenera) i bind (wyjęcie wartości w celu wstawienia jej do kolejnej funkcji zwracającej monadę [...].