¿Existe una forma válida de hacer lo siguiente en Haskell:¿Comprobación de rango en el caso de Haskell?
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
3..99 -> doDefault
otro que tiene 97 líneas de "DODEFAULT"?
¿Existe una forma válida de hacer lo siguiente en Haskell:¿Comprobación de rango en el caso de Haskell?
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
3..99 -> doDefault
otro que tiene 97 líneas de "DODEFAULT"?
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
Si realmente necesita un rango,
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
x | 3 <= x && x < 100 -> doDefault
_ -> reallyDoDefault
creo que puede tener el caso por defecto sea el patrón _, que coincide en nada.
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
no estoy seguro si eso es exactamente lo que está buscando, ya que no comprueba el límite superior de la gama de allí ... es posible que desee utilizar protectores en su lugar.
Usando protecciones! ;)
Foo n
| n == 0 = doThis
| n == 1 = doThat
| n == 2 = doAnother
| (n >= 3) && (n <= 99) = doDefault
O
| n `elem` [3..99] = doDefault
Debe ser 'n == 0', etc. –
¡Gracias! Alexey Romanov –
Personalmente me gusta más la versión 'n \' elem \ '[3..99]' que la que usa desigualdades. –
me hace desear el Preludio definido "inRange Lo Hi v = Mín <= v v &&
MtnViewMarkuna forma generalizada de lo que hay en Data.Ix : caso n de _ | inRange (3,100) n -> ... –