![](/img/trans.png)
[英]How do I use if/then/else or guards in a case statement in Haskell?
[英]How do I use "<0" condition in Haskell case
所以我试图使用case
表达式和if else
来制作递归阶乘 function 虽然我不知道如何为我的代码编写<0
条件
factorial x = case of x
<0 -> -1
0 -> 0
.
.
.
我对 Haskell 完全陌生,所以请不要对我太苛刻。
case
接受任意表达式,而不仅仅是单个变量,因此您可以编写类似
factorial x = case compare x 0 of
LT -> -1
EQ -> 1
GT -> ...
您可以与警卫一起工作,例如:
factorial x
| x < 0 = -1
factorial 0 = 0
-- ⋮
或者我们可以将这些警卫添加到案例语句中,正如@Dan D. 所说:
factorial x = case x of
x | x < 0 -> -1
0 -> 0
-- ⋮
或者您可以使用视图模式[Haskell gitlab wiki] :
{-# LANGUAGE ViewPatterns #-}
factorial x = case x of
((< 0) -> True) -> -1
0 -> 1
-- ⋮
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.