在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/