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"?

Était-ce utile?

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
scroll top