5

我有以下简单的代码

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 中是否有更好/惯用的方法来做这些事情?

4

1 回答 1

11

也许您正在寻找以下join功能:

http://pursuit.purescript.org/packages/purescript-control/0.3.0/docs/Control.Bind#d:join

join将结构的两层折叠成单层,结合任何效果。在 的情况下Maybe,这意味着Nothing只有当两个层都不是时,结果值才会是Nothing

于 2015-07-27T20:08:50.447 回答