gpt4 book ai didi

haskell - 如何组成 "Maybe"镜头?

转载 作者:行者123 更新时间:2023-12-02 17:19:47 30 4
gpt4 key购买 nike

如果我有一个用于嵌套记录的镜头,其中每个镜头都返回一个也许,我怎样才能让它们组合,以便如果“遍历”中有任何内容返回Nothing 最终结果是Nothing

data Client = Client
{
clientProperties :: Maybe Properties
, ...
}

data Properties = Properties
{
propSmtpConfig :: Maybe SmtpConfig
, ...
}

c :: Client
c = undefined

smtp = c ^. (properties . smtpConfig) -- How to make these lenses compose?

编辑我尝试了很多选项,但这是我能想到的最好的。寻找更干净的东西:

(client ^. properties) >>= (view smtpConfig)

最佳答案

您可以使用_Just prism 。这是一个人为的示例:

> (Just (Just 1, ()), ()) & _1 . _Just . _1 . _Just +~ 1
(Just (Just 2,()),())

就你而言,我认为你想要

properties . _Just . smtpConfig . _Just

关于haskell - 如何组成 "Maybe"镜头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44624090/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com