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
以传递到第一个参数,该参数返回
可能
。但我可能错了。