, ,
, .
= + ()
, unit = , .
map = , , .
: , //doubleMe :: Int a → Int b const doubleMe = a => 2 * a; (2).map(doubleMe)// (4)
Monad = unit + flatMap ( )
flatMap = , . .
: , , , .
, ,
append :: ( a, b) → Maybe ( c)
( Functor),
Maybe ("a"). Map (append ("b"))//Maybe (Maybe ("ab"))
?
, , , , .
,
step1: . - append ("b"), - "a", Maybe ("ab")
step2: , Maybe (Maybe ("ab")).
. FlatMap, .
Maybe ("a"). FlatMap (append ("b"))//Maybe ("ab")
, , , , .