2010-03-11 11 views

Respuesta

15
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 
+0

me hace desear el Preludio definido "inRange Lo Hi v = Mín <= v v && MtnViewMark

+6

una forma generalizada de lo que hay en Data.Ix : caso n de _ | inRange (3,100) n -> ... –

1

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.

6

Usando protecciones! ;)

Foo n 
    | n == 0 = doThis 
    | n == 1 = doThat 
    | n == 2 = doAnother 
    | (n >= 3) && (n <= 99) = doDefault 


O

| n `elem` [3..99] = doDefault 
+0

Debe ser 'n == 0', etc. –

+0

¡Gracias! Alexey Romanov –

+0

Personalmente me gusta más la versión 'n \' elem \ '[3..99]' que la que usa desigualdades. –

Cuestiones relacionadas