如何在独立的Getter中使用(^?ix 0)?

时间:2015-10-14 02:28:04

标签: haskell lens lenses

对于措辞不好的标题感到抱歉,但我甚至不知道如何正确地问它。

我怎么能转过来?

if else

进入这个

instPublicIP :: Instance -> Maybe Text
instPublicIP inst =
  inst ^. insNetworkInterfaces ^? ix 0 . iniAssociation . _Just . iniaPublicIP . _Just

当我尝试时,我收到以下错误:

instPublicIP' :: Lens' Instance (Maybe Text)
instPublicIP' = insNetworkInterfaces ^? ix 0 . iniAssociation . _Just . iniaPublicIP . _Just

1 个答案:

答案 0 :(得分:5)

原来我只需要将^?替换为.并将Lens'更改为Traversal'

instPublicIP' :: Traversal' Instance (Maybe Text)
instPublicIP' = insNetworkInterfaces . ix 0 . iniAssociation . _Just . iniaPublicIP