我被困在试图获得这个功能:
runArrayState :: Array arr => ArrayState arr e a -> arr e -> (a, arr e)
要运行ArrayState操作,我们称它为与数组arr一起操作 并获取结果并将结果res和原始数组arr'作为一对 (res,arr') 返回。
ArrayState 定义为
data ArrayState arr e a = MkArrayState (arr e -> (a, arr e))
我以为会是:
runArrayState act arr = ((act arr), arr)
或者
runArrayState MkArrayState (\ arr -> (res, arr)) arr' = (res, arr')
但这一切都失败了。有任何想法吗?