一行中的多个案例

时间:2014-05-05 17:44:52

标签: haskell

我有一个关于haskell的初学者问题:如何分开例如案例表达式的多个模式,以便将它们放在一行中?例如,我想写一个定义

f x = case x of Nothing -> ""
                Just _ -> "123"

成一行?如何才能做到这一点?是分离标志吗?非常感谢您的任何帮助!

3 个答案:

答案 0 :(得分:8)

虽然你可以在一行上做到这一点,但我可以建议吗?

这个名为maybe的可爱函数看起来像

maybe :: b -> (a -> b) -> Maybe a -> b

其中有点像

maybe f c (Just x) = f x
maybe f c Nothing  = c

所以在你的情况下它只是

f x = maybe "" (const "123") x
f   = maybe "" $ const "123"

答案 1 :(得分:7)

您可以使用分号(;)来分隔这样的案例:

f x = case x of Nothing -> ""; Just _ -> "123"

答案 2 :(得分:6)

您可以使用通常的分号:

f x = case x of Nothing -> "" ; Just _ -> "123"

但我强烈建议您使用it doesn't aid to readability