Verificação do alcance no caso de Haskell?
Pergunta
Existe uma maneira válida de fazer o seguinte em Haskell:
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
3..99 -> doDefault
Além de ter 97 linhas de "Dodefault"?
Solução
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
Se você realmente precisa de um intervalo,
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
x | 3 <= x && x < 100 -> doDefault
_ -> reallyDoDefault
Outras dicas
Usando guardas! ;)
Foo n
| n == 0 = doThis
| n == 1 = doThat
| n == 2 = doAnother
| (n >= 3 ) && (n <= 99) = doDefault
OU
| n `elem` [3..99] = doDefault
Eu acho que você pode fazer com que o caso padrão seja o padrão _, que corresponde a qualquer coisa.
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
Não tenho certeza se é isso que você está procurando, pois não verifica o limite superior do alcance lá ... você pode querer usar guardas.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow