import Data.List
- Anladım. 'Nitelikli', nitelikli Data.List 'ifadesinin içe aktarılmasında ne anlama gelir?
Ama qualified
import qualified Data.List
açıklamada ne
import Data.List
- Anladım. 'Nitelikli', nitelikli Data.List 'ifadesinin içe aktarılmasında ne anlama gelir?
Ama qualified
import qualified Data.List
açıklamada ne
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.
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
, 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.