Pregunta

¿Existe una forma válida de hacer lo siguiente en Haskell:

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    3..99 -> doDefault

¿Aparte de tener 97 líneas de "Dodefault"?

¿Fue útil?

Solución

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    _     -> doDefault

Si realmente necesitas un rango,

case n of
    0     -> doThis
    1     -> doThat
    2     -> doAnother
    x | 3 <= x && x < 100 -> doDefault
    _     -> reallyDoDefault

Otros consejos

¡Usando guardias! ;)

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


O

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

Creo que puede tener el caso predeterminado del patrón _, que coincide con cualquier cosa.

case n of
  0 -> doThis
  1 -> doThat
  2 -> doAnother
  _ -> doDefault

No estoy seguro de si eso es lo que estás buscando, ya que no verifica el límite superior en el rango allí ... es posible que desee usar guardias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top