是否有一种有效的方法可以在Haskell中进行以下操作:

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    3..99 -> doDefault

除了有97行的“ Dodefault”?

有帮助吗?

解决方案

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    _     -> doDefault

如果您真的需要一个范围,

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    x | 3 <= x && x < 100 -> doDefault
    _     -> reallyDoDefault

其他提示

使用警卫! )

Foo n 
  | n == 0 = doThis
  | n == 1 = doThat
  | n == 2 = doAnother
  | (n >= 3 ) && (n <= 99) = doDefault 


或者

  | n `elem` [3..99] =  doDefault

我认为您可以让默认情况是_模式,与任何事物匹配。

case n of
  0 -> doThis
  1 -> doThat
  2 -> doAnother
  _ -> doDefault

我不确定这是否是您想要的,因为它没有检查那里的范围上的上限...您可能需要使用守卫。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top