Using the Maybe Monad in “reverse”acfoltzer很好shows如何使用 mplus 。我想产生类似的效果,但是将函数列表作为参数:

tryFuncs :: [a -> Maybe b] -> a -> Maybe b
...

像这样的电话
tryFuncs [f, g, h] x

将成为可能,并且与
(f x) `mplus` (g x) `mplus` (h x)

一个人怎么能做到这一点?

最佳答案

最简单的方法是将msum(mplus的列表版本)与map一起使用:

tryFuncs fs x = msum $ map ($ x) fs

关于haskell - 使用mplus获得功能列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23761538/

10-08 20:35