给出部分函数,例如:
foo :: Maybe (Bool, a) -> a
foo = \(Just (b, a)) -> (\True -> a) b
是否有一种方法可以捕获最外层lambda抛出的PatternMatchFail
异常而又不捕获lambda主体抛出的PatternMatchFail
异常?
ghci> catchingOuterPatternMatchFailure foo (Just (True, ()))
Right ()
ghci> catchingOuterPatternMatchFailure foo (Just (False, ()))
*** Exception: ...: Non-exhaustive patterns in lambda
ghci> catchingOuterPatternMatchFailure foo Nothing
Left "...: Non-exhaustive patterns in lambda"
我认为我需要弱于普通头形式的东西,只检查给定的功能模式是否匹配给定的值,而不是它是否成功完成了