La specifica Haskell 98 dice che il punto di ingresso di un programma, vale a dire la funzione main
, deve risiedere nel modulo chiamato Main, per convenzione. Tuttavia, anche se non si scrive32 nella parte superiore del file in cui si scrive main
, il codice sorgente viene compilato e sembra funzionare correttamente quando si utilizza GHC.Per scrivere o non scrivere `modulo Main where` in Haskell
La domanda è:
- Qual è la differenza tra la scrittura
module Main where
e non scriverlo? - Quale preferisci?
La differenza è che senza l'intestazione del modulo, viene esportato solo 'main', ma con' module Main where' viene esportata ogni definizione di livello superiore. Sembra che i tuoi occhi vedessero 'modulo Main (principale) dove' dove non era presente alcuna lista di esportazione;) –
È importante avere la lista di esportazione' (main) ', perché ciò consente al compilatore di ottimizzare di più. – augustss
@DanielFischer @augustss Non riesco a trovare alcuna documentazione per supportarlo. GHC non sembra fare quella distinzione quando costruisce un eseguibile; sembra fare lo stesso ottimizzazione e collegamento per 'modulo Main (main) where' come' module Main where'. – jdeseno