是否有一种在Haskell中执行以下操作的有效方法:
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
3..99 -> doDefault
除了有97行“doDefault”之外?
答案 0 :(得分:15)
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
答案 1 :(得分:9)
使用警卫! ;)
Foo n
| n == 0 = doThis
| n == 1 = doThat
| n == 2 = doAnother
| (n >= 3 ) && (n <= 99) = doDefault
或
| n `elem` [3..99] = doDefault
答案 2 :(得分:1)
我认为您可以将默认情况设为_模式,它与任何内容匹配。
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
我不确定这是否正是你正在寻找的,因为它没有检查那里范围的上限......你可能想要使用警卫。