我的代码中有以下构造:
f :: Maybe A -> X
f a = case a of
Nothing -> x
(Just b) -> case b of
Nothing -> y
(Just c) -> case c of
Nothing -> z
(Just d) -> d
我没有看到一个明显的方法来简化这个而不是使用嵌套maybe
功能,这并不会让整个事情看起来更好。是否有任何聪明但仍然可以理解的技巧可以帮助使这个构造更加“优雅”?
为什么代码构造了一个Maybe (Maybe (Maybe X))
首先价值?解压这样的值并不好,但真正的问题是,为什么会有这样的值。也许代码最好避免所有这些嵌套的 Maybe。
如果你真的需要有这样的价值并且需要在所有的事情上做不同的事情Just
/Nothing
情况下你必须把它们全部写下来。但不是几个嵌套case
您可以将它们组合成一个大模式匹配的语句:
f Nothing = x
f (Just Nothing)) = y
f (Just (Just Nothing)) = z
f (Just (Just (Just d))) = d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)