繁体   English   中英

如何在 Haskell 案例中使用“<0”条件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM