gpt4 book ai didi

haskell - 如何减少处理 Maybe 和列表的样板文件?

转载 作者:行者123 更新时间:2023-12-02 01:47:34 25 4
gpt4 key购买 nike

是否有一种更简洁的方法来将生成列表的函数与其他生成 Maybe 的函数组合在一起?

import Text.Feed.Query (getItemLink, getFeedItems)

s = getFeedItems >=> (maybeToList . getItemLink)

最佳答案

您可以使用 mapMaybe :: (a -> Maybe b) -> [a] -> [b]来自 Data.Maybe:

s = mapMaybe getItemLink . getFeedItems

该模块还包含另一个有用的函数,catMaybes:

catMaybes :: [Maybe a] -> [a] -- filter out all the Nothings

列表理解在这种情况下也很有用,尽管更冗长:

s feed = [ itemLink | Just itemLink <- map getItemLink (getFeedItems feed) ]
-- s feed = [ itemLink | item <- getFeedItems feed, Just itemLink <- return item ]

关于haskell - 如何减少处理 Maybe 和列表的样板文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24684363/

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