我有以下简单的代码
import Data.String.Regex
import Data.Array
last <$> match someRegex " 1"
在哪里
match someRegex " 1"
返回类似的东西
Just ([Just (" 1"),Just (" "),Just ("1")])
和
last <$> match someRegex " 1"
返回类似的东西
Just (Just (Just (" 1")))
现在我有一个深深嵌套的Maybe。这使得它很难使用(甚至使用仿函数)。
我为自己编写了一对辅助函数 - 但我对此有点不满意。不知怎么感觉不太对劲。
extract j = do
case j of
Nothing -> Nothing
Just a -> a
extract2 jj = extract $ extract jj
然后像这样使用它
extract2 $ last <$> match someRegex " 1"
在 Purescript/Haskell 中是否有更好/惯用的方法来做这些事情?
最佳答案
也许您正在寻找 join
功能:
http://pursuit.purescript.org/packages/purescript-control/0.3.0/docs/Control.Bind#d:joinjoin
将结构的两层折叠成一层,结合任何效果。在Maybe
的情况下,这意味着结果值不会是 Nothing
仅当两层都不是 Nothing
.
关于haskell - 处理(深度嵌套)仿函数的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662186/