m a -> a (pull型)

m a -> (a -> m ()) -> m () (push型)

m a -> (a -> m b) -> m b (push型??)