comonad

    11热度

    1回答

    在沉思些什么有用的标准类建议to this one class Coordinate c where createCoordinate :: x -> y -> c x y getFirst :: c x y -> x getSecond :: c x y -> y addCoordinates :: (Num x, Num y) => c x y -> c

    3热度

    1回答

    我已经使用Store comonad编写了Conway's Game of Life的简单实现(请参阅下面的代码)。我的问题是,从第五次迭代开始,网格生成速度明显变慢。我的问题与我使用Store comonad的事实有关吗?还是我犯了一个明显的错误?据我所知,基于Zipper comonad的otherimplementations是高效的。 import Control.Comonad da

    4热度

    1回答

    我过去几周一直在向一个将单子(主要是从mtl)转移到箭头的图书馆捐款。 下面是与StateT单子一个简单的例子,从mtl: newtype StateT s m a = StateT { runStateT :: s -> m (a, s) } -- arrowization --> newtype StateTA s a b c = StateTA { runStateTA :: a (b,

    2热度

    1回答

    就精辟的摘要而言 - this description of Comonads似乎取胜 - 将它们描述为“输入杂质类型”。 什么是codata的同义密码(单句)描述?

    4热度

    1回答

    我试图找出unfold/coiter与Control.Comonad.Cofree和unfold/ana之间的差异从Data.Control.Fixedpoint。 Hackage库是resp。 free和recursion-schemes。 Cofree和Fix似乎是堂兄弟,我试图找出什么是可能的与两个和什么是可能的只有他们之一。 我能写的Foldable为Cofree一个实例,这样我可以申请c

    14热度

    1回答

    为什么当你定义函数复制 duplicate :: w a -> w (w a) 的Comonad类型类(link),你必须修改“的背景下,”所有元素(即更改除当前其他元素值的上下文)。为什么不只是使用类似的东西在Monad中返回? 例(拉链): data Z a = Z [a] a [a] ,为什么我就不能定义重复的 duplicate z = Z [] z [] 我试图得到要求

    0热度

    1回答

    单子列表是given here。另见斯皮瓦克的paper here。所以列表是一个monad。它是一个共同的吗?你会如何证明这一点?

    4热度

    2回答

    我们可以将monad描述为计算上下文,monad实现完全保留该上下文的含义。 例如Option - 上下文的含义是值可能存在。 考虑到Option数据类型,唯一有意义的实现是pure = some, flatMap f = {none => none; some x => f x } 正如我对monad的理解一样,通过遵循类型签名 - 对于任何monad,只有一个合理的实现。换句话说,如果您想为值

    6热度

    1回答

    在我的应用程序中,我试图实现一个动画系统。在这个系统中,动画被表示为帧的循环列表: data CyclicList a = CL a [a] 我们可以(低效率)推进动画如下: advance :: CyclicList a -> CyclicList a advance (CL x []) = CL x [] advance (CL x (z:zs)) = CL z (zs ++ [x])

    17热度

    3回答

    {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveTraversable #-} import Control.Comonad import Data.Functor.Reverse import Data.List (unfoldr) 首先,一些上下文(哈哈)的方式。我