Haskell 一行多个案例

Haskell 一行多个案例,haskell,Haskell,我有一个关于haskell的初学者问题:如何将一个case表达式的多个模式分开,以便将它们放在一行中?例如,我想写一个定义 f x = case x of Nothing -> "" Just _ -> "123" 变成一行?如何做到这一点?这是分离的标志吗?提前非常感谢您的帮助 您可以使用分号(;)来分隔以下情况: f x = case x of Nothing -> ""; Just _ -> "123" 您可以使用常用的分号: f

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

f x = case x of Nothing -> ""
                Just _ -> "123"
变成一行?如何做到这一点?这是分离的标志吗?提前非常感谢您的帮助

您可以使用分号(
)来分隔以下情况:

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

您可以使用常用的分号:

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

但是我强烈建议你反对它,。

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

有一个可爱的函数叫做
也许
,它看起来像

maybe :: b -> (a -> b) -> Maybe a -> b
maybe f c (Just x) = f x
maybe f c Nothing  = c
这有点像

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"

这不应该是
f=maybe''吗。const“123”
?@bheklillr不,
可能
需要一个完整的函数。哦,老实说,我在寻找像“可能”这样的函数。谢谢!谢谢!是的,“;”正在做这项工作。我想在编辑器中编写这种简单的函数,然后将其复制到ghci。但ghci不喜欢第二个案例开头的标签。因此,为了测试单行命令,可以使用@dmw64在ghci中输入多行代码,方法是使用
:{--code-->}
Ohh,我知道。谢谢你的提示!