1

我正在使用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重建结构但进行了调整,但这些听起来效率低下且不雅。似乎这些类型类的某种组合可以为我做到这一点;或者,如果我缺少其他一些约束/类型类,可以在这里提供帮助。

谢谢!

4

0 回答 0