我在状态单子中有一个数组和一个数组索引。我可以使用 idx和其他类似的修饰符来读取use
和修改它:+=
{-# Language TemplateHaskell #-}
import Control.Lens
import Control.Lens.TH
import Control.Monad.State
import Data.Array
data M = M { _arr :: Array Int Int, _idx :: Int }
$(makeLenses ''M)
foo x = do
idx += x
ii <- use idx
return ii
现在我想组合arr
并idx
形成一个镜头arr[idx]
:
combo arr idx = undefined
bar x = do
combo arr idx += x
ii <- combo arr idx
return ii
我怎样才能做到这一点?代码会有所不同Data.Sequence
吗?