Monada – w programowaniu funkcyjnym: rodzaj konstruktora abstrakcyjnego typu danych, który implementuje funkcje wiązania () oraz jednostki ()Haskell Programming From First Principles Christopher Allen, Julie Moronuki, s. 755–799.. Pojęcie to wywodzi się z teorii kategorii, gdzie omawiany abstrakt stanowi monadę nad kategorią typów z funkcjami jako morfizmami. Jednostka określa operację tworzenia singletonu czy też akcji, której wynikiem jest zadana wartość. Wiązanie (w niektórych językach określane jako ) buduje na podstawie wyniku poprzedniego obliczenia nowe obliczenie, zachowując przy tym jego formę.
Jedną z głównych cech monad jest to, że pozwalają wynieść pewne mechanizmy i zachowania do abstrakcji, zwalniając tym samym programistę z konieczności ręcznej obsługi kontekstu. Przykładowo, działając na (jakkolwiek zdefiniowanych) zbiorach można opisać jednostkę jako
oraz wiązanie jako
by potem w sposób generyczny budować potoki danych w kompletnym oderwaniu od wewnętrznej implementacji czy nawet interpretacji. Dla przykładu konstruowanie iloczynu kartezjańskiego dwóch zbiorów mogłoby przebiegać tak: