gpt4 book ai didi

haskell - 理解 Comonad 的 <$$>

转载 作者:行者123 更新时间:2023-12-02 15:27:38 25 4
gpt4 key购买 nike

鉴于 fp-course 中的以下内容:

class Functor f where
(<$>) ::
(a -> b)
-> f a
-> f b

class Functor f => Extend f where
(<<=) ::
(f a -> b)
-> f a
-> f b

我定义了<$$>如下:

(<$$>) ::
Comonad f =>
(a -> b)
-> f a
-> f b
(<$$>) f fa = f <$> fa

但是,我很想知道是否还有其他方法来实现 <$$>不使用<$> 。有没有?如果有,请展示出来!

最佳答案

您需要 extract方法Comonad ; Extend没有 fmap 还不足以逃脱.

(<$$>)
:: Comonad f
=> (a -> b)
-> f a
-> f b
f <$$> w = f . extract <<= w

这基本上就是 liftWControl.Comonad 中实现.

另请注意,您需要 <<= (或 extend ); extractduplicate还不够。情况与Bind类似和Monad ;您可以实现fmap使用>>=pure ,但不使用>>=单独且不使用joinpure .

关于haskell - 理解 Comonad 的 <$$>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54319549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com