Domanda

Mentre sto imparando Haskell, vedo che ci sono molti estensioni di lingua utilizzate nel codice di vita reale. Come principiante, dovrei imparare a usarli o dovrei evitarli a tutti i costi? Vedo che interrompe la compatibilità con Haskell & nbsp; 98 e limita il codice a praticamente solo GHC. Tuttavia, se sfoglio pacchetti su Hackage, vedo che la maggior parte di essi sono comunque solo GHC.

Quindi, qual è l'atteggiamento della comunità verso l'uso delle estensioni di lingua?

E se l'uso delle estensioni è OK, come posso distinguere le estensioni che posso usare & # 8220; in sicurezza & # 8221; (quelli che probabilmente diventeranno parte del prossimo standard Haskell) da quelli che sono per lo più & # 8220; sperimentali & # 8221 ;? Ad esempio, suppongo che -XDisambiguateRecordFields è utile e utile, ma è probabile che sia supportato in futuro?

È stato utile?

Soluzione

Ci sono alcune estensioni GHC di cui è troppo bello vivere senza. Tra i miei preferiti ci sono

  • Classi di tipo multiparametro
  • Variabili di tipo con ambito
  • Tipi di livello superiore
  • Tipi di dati algebrici generalizzati (GADT)

Di questi, quello veramente essenziale sono le classi di tipo multiparametro.

Alcune estensioni GHC sono molto speculative e sperimentali e potresti volerle usare con cautela. Un buon modo per identificare un'estensione stabile e affidabile è vedere se è prevista per l'inclusione in Haskell Prime , che si spera sia il successore dell'Haskell 98.

Secondo il suggerimento di Don Stewart che ogni estensione dovrebbe essere contrassegnata usando il pragma LANGUAGE nel file sorgente. Non abilitare le estensioni utilizzando le opzioni della riga di comando.

Altri suggerimenti

Sì, utilizzare le estensioni appropriate.

Ma assicurati di abilitarli intenzionalmente - solo quando decidi di averne bisogno. Fallo su un modulo per modulo tramite {- # LANGUAGE Rank2Types # -} (ad esempio).

In genere le persone usano le estensioni GHC piuttosto pesantemente, perché sono così utili e Haskell 98 è piuttosto vecchio. Una volta che c'è un standard più aggiornato, le persone possono fare più sforzi per attenersi ad esso.

Puoi trovare lo stato delle proposte per il prossimo standard qui .

Le altre risposte qui sono buone. Aggiungerei che le estensioni GHC non sono così vulnerabili al futuro (*) come potrebbero essere, perché GHC sembra essere di gran lunga il compilatore Haskell più popolare e non vedo che cambierà presto.

(*) come al contrario di "quot-future"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top