问题标签 [comonad]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
800 浏览

performance - 使用 Store comonad 执行 Conway 的生命游戏

我使用Store comonad编写了一个简单的Conway 生命游戏实现(参见下面的代码)。我的问题是网格生成从第五次迭代开始明显变慢。我的问题是否与我使用 Store comonad 的事实有关?还是我犯了一个明显的错误?据我所知,其他基于 Zipper comonad 的实现是有效的

0 投票
1 回答
360 浏览

list - 非空列表comonad

我一直在冥想comonad,并且直觉认为非空列表(“完整列表”)是comonad。我在 Idris 中构建了一个似是而非的实现,并且一直致力于证明Comonad 定律,但未能证明其中一个定律的递归分支。我如何证明这一点(?i_do_not_know_how_to_prove_this_if_its_provable漏洞)——或者我错了我的实现是一个有效的comonad(我已经查看了Haskell的NonEmptycomonad实现,它似乎和我的一样)?

0 投票
0 回答
43 浏览

haskell - 只改变 Store Comonad 的焦点?

我正在使用Control.Comonad.Representable.Store来表示游戏的网格对象;网格是:type Grid = Store (Compose Vector Vector) a; 其中 Vector 有一个由 索引的可表示实例Int

这允许我使用 comonadicextendexperiment网格方块与它们的邻居进行交互,并且我可以使用 Store monad 的焦点(由 表示pos)作为网格中的光标。

我正在寻找的是一种合理的方法来设置商店焦点处的值,或者使用的Representable实例Compose Vector Vector来设置/改变给定索引处的值。据我所知,使用 in 中的工具,ComonadRepresentable只能从结构中获取值,我找不到任何函数,例如:over :: ComonadStore s w => (a -> a) -> w a -> w a甚至Representable f => set :: f a -> Rep f -> a -> f a.

当然,我可以索引向量,调整值,然后将其设置回其索引;甚至用于tabulate重建结构但进行了调整,但这些听起来效率低下且不雅。似乎这些类型类的某种组合可以为我做到这一点;或者,如果我缺少其他一些约束/类型类,可以在这里提供帮助。

谢谢!

0 投票
1 回答
312 浏览

haskell - 镜头超过 Comonads 或 Representable

这是这个问题的一个更具体的变体:Mutate only focus of Store Comonad? ,为了避免一次问多个问题。

是否有任何与Control.Lens兼容的镜头允许我与共单子的焦点(来自 的值extract)或与存储共单子的索引/值(pos)进行交互?

似乎镜头在这里可能有用,但我一直找不到合适的东西;任何帮助将不胜感激,谢谢!

0 投票
1 回答
176 浏览

haskell - 变压器中的类型变量位置

考虑State类型 - 或者至少是简化版本:

现在,假设我们要导出StateTmonad 转换器。transformers定义如下:

在这里,m被放置在函数箭头的右侧,但在元组之外。但是,如果我们不知道正确的答案,我们可能会放在m其他地方:

显然版本transformers是正确的,但为什么呢?更一般地说,在定义 monad 转换器时,如何知道将“内部”monad 的类型变量放在哪里?更概括地说, comonad 变压器是否有类似的规则?

0 投票
0 回答
170 浏览

haskell - 如何在 2D 列表上更改 Haskell Store Comonad 的焦点

我正在努力解决以下问题。我正在尝试使用 Haskell 中的商店 comonads 制作生命游戏。我有以下相关代码:

然后我创建了一个初始字段:

初始字段是一个小例子,我想在其中测试我的程序。现在,棘手的部分来了。

现在我的问题是,将焦点转移到更新商店的好方法是什么?向下移动很简单:

我的问题是,例如,向右或向左移动的好方法是什么?我是否选择了错误的索引函数(head.head)?

感谢您的时间!

0 投票
2 回答
83 浏览

scala - 找不到 Tuple2K 的仿函数实例

我有一个玩具 DSL

我想与一个同样玩具的口译员配对

这是一个程序示例:

这是口译员:

我已经进行了尽职调查并定义了函子以及注入隐式。编译器抱怨它找不到实例cats.Functor[[A]cats.data.Tuple2K[example.CoLogging,example.CoPersist,A]],即使我正在导入cats.data.Tuple2K._ 隐式定义的实例

我看不出我做错了什么,这一定是愚蠢的。你有什么主意吗?所有代码都可以在这个 gist中看到。

0 投票
1 回答
83 浏览

scala - scalaz 中的 Cohoist 是什么?

scalaz定义了一个Cohoist

其中ComonadTrans定义:

问题是如何治疗这种类型?有人能用几句话解释一下或举个例子吗?

0 投票
1 回答
115 浏览

haskell - 理解 Comonad 的 <$$>

鉴于fp-course的以下内容:

<$$>是这样定义的:

但是,我很想知道是否有另一种<$$>不使用<$>. 在那儿?如果有,请出示!

0 投票
1 回答
309 浏览

scala - Store Comonad 和 Representable Store Comonad 在函数式编程中有什么区别?

Representable Store Comonad 和 Store Comonad 提供了类似的功能……我们什么时候应该使用其中一个,有什么好处?