## Maybe

### Haskell type

data Maybe a = Nothing | Just a deriving (Eq, Ord) instance Monad Maybe where (Just x) >>= k = k x Nothing >>= _ = Nothing return = Just fail _ = Nothing -- utility (Just _) >> k = k Nothing >> _ = Nothing instance Functor Maybe where fmap _ Nothing = Nothing fmap f (Just a) = Just (f a)

### Discussion

#### Reference

hackage: Source