如何在 Haskell 情况下使用“<0”条件

How do I use "<0" condition in Haskell case

所以我正在尝试使用 case 表达式和 if else 制作递归阶乘函数,尽管我不知道如何为我的代码编写 <0 条件

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

我对Haskell完全陌生,所以请不要对我太苛刻。

你可以和守卫一起工作,例如:

factorial x
  <b>| x < 0 = -1</b>
factorial 0 = 0
-- ⋮

或者我们可以将这些守卫添加到 case 语句中,如 :

factorial x = case x of
  <b>x | x < 0 -> -1</b>
  0 -> 0
-- ⋮

或者您可以使用 view patterns [Haskell gitlab wiki]:

{-# LANGUAGE <b>ViewPatterns</b> #-}

factorial x = case x of
  ((< 0) -> True) -> -1
  0 -> 1
  -- ⋮

case 采用任意表达式,而不仅仅是单个变量,因此您可以编写类似

factorial x = case compare x 0 of
               LT -> -1
               EQ -> 1
               GT -> ...