Pergunta

À medida que estou aprendendo Haskell, vejo que há muitas extensões de idioma usado no código da vida real.Como iniciante, devo aprender a usá-los ou devo evitá-los a todo custo?Vejo que isso quebra a compatibilidade com Haskell 98 e limita o código apenas ao GHC.No entanto, se eu navegar pelos pacotes no Hackage, vejo que a maioria deles é apenas GHC.

Então, qual é a atitude da comunidade em relação ao uso de extensões linguísticas?

E se o uso de extensões for aceitável, como posso distinguir as extensões que posso usar “com segurança” (aquelas que provavelmente se tornarão parte do próximo padrão Haskell) daquelas que são em sua maioria “experimentais”?Por exemplo, suponho que -XDisambiguateRecordFields é bom e útil, mas é provável que tenha suporte no futuro?

Foi útil?

Solução

Existem algumas extensões do GHC que são boas demais para viver sem.Entre os meus favoritos estão

  • Classes de tipo multiparâmetro
  • Variáveis ​​de tipo com escopo
  • Tipos de classificação superior
  • Tipos de dados algébricos generalizados (GADTs)

Destes, o realmente essencial são as classes do tipo multiparâmetros.

Algumas extensões do GHC são muito especulativas e experimentais e você pode querer usá-las com cautela.Uma boa maneira de identificar uma extensão estável e confiável é ver se ela está prevista para inclusão no Haskell Prime, que se espera ser o sucessor do Haskell 98.

Apoio a sugestão de Don Stewart de que cada extensão deve ser marcada usando o LANGUAGE pragma no arquivo de origem. Não habilite extensões usando opções de linha de comando.

Outras dicas

Sim, use extensões conforme apropriado.

Mas não se esqueça de habilitá -los intencionalmente - Somente quando você decide que precisa deles. Faça isso por módulo via {-# LANGUAGE Rank2Types #-} (por exemplo).

De um modo geral, as pessoas usam extensões de GHC com bastante força, porque são muito úteis e Haskell 98 é bastante antigo. Uma vez que as pessoas padrão mais atualizadas podem fazer mais esforço para cumpri -lo.

Você pode encontrar o status das propostas para o próximo padrão aqui.

As outras respostas aqui são boas.Eu acrescentaria que as extensões do GHC não são tão vulneráveis ​​no futuro (*) quanto poderiam ser, porque o GHC parece ser de longe o compilador Haskell mais popular, e não vejo isso mudando tão cedo.

(*) como o oposto de "à prova de futuro"

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