相关疑难解决方法(0)

使用Control.Lens的索引列表需要Monoid约束

以下代码无法编译:

{-# LANGUAGE TemplateHaskell #-}

import Control.Lens

data MyType = MyType Int
data Outer = Outer { _inners :: [ Inner ] }
data Inner = Inner { _val :: MyType }

$(makeLenses ''Outer)
$(makeLenses ''Inner)

i1 = Inner (MyType 1)
i2 = Inner (MyType 2)

o = Outer [i1, i2]

x = o ^. inners . ix 0 . val
Run Code Online (Sandbox Code Playgroud)

给出这个错误

Toy.hs:17:23:
No instance for (Data.Monoid.Monoid MyType)
  arising from a use of `ix'
Possible fix:
  add an instance declaration …
Run Code Online (Sandbox Code Playgroud)

haskell lenses haskell-lens

7
推荐指数
1
解决办法
853
查看次数

标签 统计

haskell ×1

haskell-lens ×1

lenses ×1