import Data.List
- Lo capisco.Che cosa significa "qualificato" nell'istruzione "Import data Data.List"?
Ma cosa significa qualified
nell'istruzione import qualified Data.List
?
import Data.List
- Lo capisco.Che cosa significa "qualificato" nell'istruzione "Import data Data.List"?
Ma cosa significa qualified
nell'istruzione import qualified Data.List
?
Un'importazione qualificata rende disponibili le entità importate solo in formato qualificato, ad es.
import qualified Data.List
result :: [Int]
result = Data.List.sort [3,1,2,4]
Con solo import Data.List
, i soggetti sono disponibili in forma qualificato e in forma non qualificato. Di solito, solo facendo un'importazione qualificato porta a nomi troppo lunghi, in modo da
import qualified Data.List as L
result :: [Int]
result = L.sort [3,1,2,4]
Un importazione qualificato permette di utilizzare le funzioni con lo stesso nome importato da diversi moduli, per esempio map
da Prelude
e map
da Data.Map
.
La parola chiave qualified
significa che i simboli nei moduli importati non vengono importati nello spazio dei nomi non qualificato (senza prefisso). Sono disponibili solo con il loro nome completo. Ad esempio, foldr'
ha il nome non qualificato foldr'
e il nome qualificato Data.List.foldr'
.
Si utilizzano le importazioni qualificate per impedire l'inquinamento dello spazio dei nomi. È anche possibile utilizzare import qualified Foo as Bar
, che importa da Foo
ma con nomi come se l'importazione provenga da Bar
. Ad esempio, se si digita import qualified Data.List as L
, è possibile utilizzare foldr'
come L.foldr'
.
Se si esegue un'importazione non qualificata (impostazione predefinita), è possibile fare riferimento a qualsiasi cosa importata solo con il suo nome.
Se si esegue un'importazione qualificata, è necessario anteporre il nome al modulo da cui è stato importato.
esempio
import Data.List (sort)
Questa è una di importazione non qualificato. Ora puoi dire sia sort
o Data.List.sort
.
import qualified Data.List (sort)
Questa è un'importazione qualificata. Ora sort
da solo non funziona, e devi dire Data.List.sort
.
Perché questo è abbastanza lunga, di solito si dice qualcosa di simile
import qualified Data.List (sort) as LS
e ora è possibile scrivere LS.sort
, che è più breve.