(>>=) m f = join $ fmap f m join x = x >>= id fmap f x = x >>= (return . f)