如何在哈斯克尔情况下使用"<0"条件



因此,尽管我不知道如何为我的代码编写<0条件,但我正在尝试使用case表达式和if else来创建递归阶乘函数

factorial x = case of x
<0 -> -1
0 ->  0
.
.
.

我是哈斯克尔的新手,所以请不要对我太苛刻。

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]:

{-# LANGUAGEViewPatterns#-}
factorial x = case x of
((< 0) ->True) -> -1
0 -> 1
-- ⋮

相关内容

最新更新