2012-06-30 26 views

cevap

24

Nitelikli içe sadece yetkili formunda, örneğin ithal kişiler kullanılabilir hale getirir Sadece import Data.List ile

import qualified Data.List 

result :: [Int] 
result = Data.List.sort [3,1,2,4] 

, kişiler nitelikli biçimde ve niteliksiz formda mevcuttur. Genellikle, sadece nitelikli ithalat yapıyor çok uzun isimler yol açar, bu yüzden

import qualified Data.List as L 

result :: [Int] 
result = L.sort [3,1,2,4] 

nitelikli ithalat birçok modül, örneğin ithal aynı adla işlevleri kullanarak verir map, Prelude ve map'dan Data.Map'dan.

9

qualified ithal modüllerde semboller niteliksiz (prefixless) ad ithal anlamına gelir kelime. Sadece tam adlarıyla kullanılabilirler. Örneğin, foldr', foldr' niteliksiz adına ve Data.List.foldr' nitelikli adına sahiptir.

Bir ad kirliliği önlemek için nitelikli ithalat kullanır. Ayrıca Foo'dan içe aktarılan import qualified Foo as Bar, ancak içe aktarma Bar'dan kaynaklanıyor gibi isimlerle kullanmak da mümkündür. Örneğin, import qualified Data.List as L yazarsanız, foldr''u L.foldr' olarak kullanabilirsiniz. Bir vasıfsız ithalat (varsayılan) yaparsanız

15

, sadece adıyla ithal şey anlamına gelebilir. Eğer nitelikli bir ithalat yaparsanız

, bunu ithal ediyor modülü ile adı öneki gerekir.

Ör

import Data.List (sort) 

Bu vasıfsız ithalatı. Artık sort veya Data.List.sort deyin.

import qualified Data.List (sort) 

Bu, nitelikli bir içe aktarma işlemidir. Artık sort'un kendisi çalışmıyor ve Data.List.sort demeniz gerekiyor. oldukça uzun Çünkü

, normalde

import qualified Data.List (sort) as LS 

ve benzeri bir şey şimdi daha kısa olan LS.sort yazabilir söylüyorlar.

İlgili konular