2012-06-30 11 views

risposta

24

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.

9

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'.

15

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.