镜头设定器类似于“单片式”镜头吸收器?

时间:2019-12-29 11:36:33

标签: haskell lens

在某些情况下,如果不存在正在访问的字段,则^.镜头 getter 默认为mempty。示例:

let x = Nothing :: Maybe String

x ^. _Just == ""

具有相似行为的类似镜头 setter 是什么?这是我要找的东西:

data MyRecord = MyRecord  { myrecordFoo :: Maybe Int  }
instance Monoid MyRecord where
  mempty = MyRecord { myRecordFee = Nothing }

$(makeLensesWith abbreviatedFields ''MyRecord)


let x = Nothing :: Maybe MyRecord

x & _Just . foo `someLensSetter` 10 == (Just $ MyRecord { myRecordFoo = 10 })

我尝试过使用<>~<>=,但是无法让它们按照我上面期望的方式工作。这有可能吗?我还有其他标准组合器吗?任何可实现此目的的自定义组合器?

0 个答案:

没有答案