Pergunta

Existe uma maneira válida de fazer o seguinte em Haskell:

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

Além de ter 97 linhas de "Dodefault"?

Foi útil?

Solução

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

Se você realmente precisa de um intervalo,

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

Outras dicas

Usando guardas! ;)

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


OU

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

Eu acho que você pode fazer com que o caso padrão seja o padrão _, que corresponde a qualquer coisa.

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

Não tenho certeza se é isso que você está procurando, pois não verifica o limite superior do alcance lá ... você pode querer usar guardas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top