Maybe - не монада
(Maybe, of, join) where
of = Just
join (Just (Just x)) = Just x
join _ = Nothing
вот это - монада
join/of/Maybe при этом существуют сами по себе и не зная ничего про монадность, монадность мы используем, когда подставляем эту тройку в код, который требует какую-то любую монаду, до этого момента это просто использование Maybe и функций для него