ap :: (Monad' m) => m (a -> b) -> m a -> m b
ap mf mx =
      bind'' mf  ( \f ->
      bind'' mx  ( \x ->
      return' (f x)  ))
ap :: (Monad' m) => m (a -> b) -> m a -> m b
ap mf mx =
      bind'' mf  ( \f ->
      bind'' mx  ( \x ->
      return' (f x)  ))
ap mf mx =
      bind'' mf  ( \f ->
      bind'' mx  ( \x ->
      return' (f x)  ))