一行中的多个案例

dmw*_*w64 2 haskell

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

f x = case x of Nothing -> ""
                Just _ -> "123"
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*zer 8

虽然你可以在一条线上做到这一点,我可能不建议吗?

有这个可爱的功能maybe,看起来像

maybe :: b -> (a -> b) -> Maybe a -> b
Run Code Online (Sandbox Code Playgroud)

哪个有点像

maybe f c (Just x) = f x
maybe f c Nothing  = c
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下它就是这样

f x = maybe "" (const "123") x
f   = maybe "" $ const "123"
Run Code Online (Sandbox Code Playgroud)


fjh*_*fjh 7

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

f x = case x of Nothing -> ""; Just _ -> "123"
Run Code Online (Sandbox Code Playgroud)


Sib*_*ibi 6

你可以使用通常的分号:

f x = case x of Nothing -> "" ; Just _ -> "123"
Run Code Online (Sandbox Code Playgroud)

但我强烈建议使用它,它对可读性没有帮助.

  • @ dmw64您可以使用`:{ - code - :}`在ghci中输入多行代码 (2认同)