我有以下简单代码
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中有没有更好/惯用的方法来做这些事情?
答案 0 :(得分:11)
也许您正在寻找join
功能:
http://pursuit.purescript.org/packages/purescript-control/0.3.0/docs/Control.Bind#d:join
join
将一个结构的两层折叠到一个单独的图层,结合任何效果。对于Maybe
,这意味着仅当两个图层都不是Nothing
时,结果值才会为Nothing
。