data Maybe a = Just a | Nothing
typische Benutzung:
case ( evaluate e l ) of
Nothing -> Nothing
Just a -> case ( evaluate e r ) of
Nothing -> Nothing
Just b -> Just ( a + b )
äquivalent
(mit passendem (>>=) und return)
evaluate e l >>= \ a ->
evaluate e r >>= \ b ->
return ( a + b )