gpt4 book ai didi

haskell - 了解 `foldM`

转载 作者:行者123 更新时间:2023-12-03 15:04:48 34 4
gpt4 key购买 nike

我在看foldM为了获得关于如何使用它的直觉。
foldM :: Monad m => (a -> b -> m a) -> a -> [b] -> m a
在这个简单的例子中,我只返回 [Just 100] .但是,如果我想使用 b 怎么办? ?

ghci> foldM (\a _ -> return a) (Just 100) [1,2,3] :: [Maybe Int]
[Just 100]

我很困惑如何使用 b(a -> b -> m a) 内.

请帮助我了解此功能以及如何使用 b .

最佳答案

这是一个愚蠢的例子。假设我们想对列表求和,并确保部分和永远不会超过(比如)10;因此:

> let ensure p x = x <$ guard (p x)
> foldM (\a b -> ensure (<10) (a+b)) 0 [1,2,3] :: Maybe Integer
Just 6
> foldM (\a b -> ensure (<10) (a+b)) 0 [5,5,5,-10] :: Maybe Integer
Nothing

关于haskell - 了解 `foldM`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084771/

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