繁体   English   中英

组装镜头时遇到麻烦

[英]Trouble when composing lenses

首先,一段代码:

λ> let applicationState = ('a','b',(M.fromList $ zip [1..3] [11,22,33],M.fromList $ zip [4,5,6] [44,55,66],M.fromList $ zip [7,8,9] [S.fromList ["77","777","7777"],S.fromList ["88","888","8888"],S.fromList ["99","999","9999"]]))
λ> :t applicationState
applicationState
  :: (Char,
      Char,
      (M.Map Integer Integer,
       M.Map Integer Integer,
       M.Map Integer (S.Set [Char])))
λ> -- this doesn't work
λ> -- applicationState ^. _3 . _3 . at 9 . contains "9999"
λ> -- this does but only for getting, not for setting
λ> applicationState ^. _3 . _3 . at 9 . to (maybe False (S.member "9999"))
True

我被#haskell-lens频道的友好帮助指导使用最后一行,但我也希望能够设置。

有帮助吗?

稍后编辑:这似乎工作:

λ> applicationState ^. _3 . _3 . at 9 . non S.empty . contains "99999"
False
λ> applicationState & _3 . _3 . at 9 . non S.empty . contains "99999" .~ True

to Combinator的创建只是吸气剂,因而可以不再设置。 要设置,请使用像_Just这样的棱镜代替to

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM