只改变Store Comonad的焦点?

时间:2018-03-31 07:15:45

标签: haskell comonad representable

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

这允许我使用comonadic extendexperiment来与网格方块进行交互,并让我使用Store monad的焦点(由pos表示)作为光标进入网格。

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

当然,我可以索引向量,调整值,然后将其设置回索引;或者甚至使用Representable f => set :: f a -> Rep f -> a -> f a来重建结构但是进行了调整,但那些听起来效率低且不合理。似乎这些类型的某些组合能够为我做到这一点;或者如果还有其他一些我想念的约束/类型类,可以帮到这里。

谢谢!

0 个答案:

没有答案