2016-10-04 69 views
4

这个功能有没有实现?该功能可以执行吗?

foo :: (Monad m, Monad n) => m a -> n a -> (a -> a -> a) -> m (n a) 
foo x y f = ... 
+0

除了琐碎的'\ _ na _ - > return na'? – hao

+0

是啊我正在寻找一个函数,以'f'以某种方式 – drhodes

回答

12

是的,它可以给一个更一般的类型。

foo :: (Functor f, Functor g) => (a -> b -> c) -> f a -> g b -> f (g c) 
foo f fx gy = fmap (\x -> fmap (f x) gy) fx