Haskell bitraverse的镜头等价物是什么?
有没有办法创造一个镜头,可以做类似的事情,这个功能Haskell bitraverse的镜头等价物是什么?,haskell,haskell-lens,bifunctor,Haskell,Haskell Lens,Bifunctor,有没有办法创造一个镜头,可以做类似的事情,这个功能 λ> :t \f -> bitraverse f f \f -> bitraverse f f :: (Applicative f, Bitraversable t) => (b -> f d) -> t b b -> f (t d d) 目前我想满足的具体类型是: something :: (Applicative f, Monad m) => (a -> f a) -&g
λ> :t \f -> bitraverse f f
\f -> bitraverse f f
:: (Applicative f, Bitraversable t) =>
(b -> f d) -> t b b -> f (t d d)
目前我想满足的具体类型是:
something :: (Applicative f, Monad m) => (a -> f a) -> (m a, m a) -> f (m (a, a))
我一直在尝试使用lens中的
遍历
和遍历
,但似乎无法使类型对齐。不知何故,我对此表示怀疑,至少没有“自然”实现。如果您认为f
可能是,而m
是IO
,那么您的类型签名要求您在运行IO
之前知道结果是只是还是没有,但是您需要运行IO
来获得a
以传递到第一个参数,该参数返回可能
。但我可能错了。