Есть ли допустимый способ сделать следующее в 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
Я думаю, что вы можете использовать по умолчанию шаблон _, который подходит ко всему.
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
Я не уверен, что это именно то, что вы ищете, поскольку он не проверяет верхнюю границу диапазона... возможно, вместо этого вы захотите использовать гварды.
Использование гвардии! ;)
Foo n
| n == 0 = doThis
| n == 1 = doThat
| n == 2 = doAnother
| (n >= 3 ) && (n <= 99) = doDefault
ИЛИ
| n `elem` [3..99] = doDefault