Le contrôle d'exécution dans le cas de Haskell?
Question
Y at-il un moyen valable de faire ce qui suit dans Haskell:
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
3..99 -> doDefault
autre que d'avoir 97 lignes de "DoDefault"?
La solution
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
Si vous avez vraiment besoin d'une plage,
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
x | 3 <= x && x < 100 -> doDefault
_ -> reallyDoDefault
Autres conseils
Utilisation de gardes! ;)
Foo n
| n == 0 = doThis
| n == 1 = doThat
| n == 2 = doAnother
| (n >= 3 ) && (n <= 99) = doDefault
OU
| n `elem` [3..99] = doDefault
Je pense que vous pouvez avoir le cas par défaut soit le _ modèle, qui correspond à quoi que ce soit.
case n of
0 -> doThis
1 -> doThat
2 -> doAnother
_ -> doDefault
Je ne sais pas si c'est tout à fait ce que vous cherchez, car il ne vérifie pas la limite supérieure de la plage, il ... vous pouvez utiliser à la place des gardes.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow