2017-06-13 9 views
8

W GHCi, pojawiają się dwa sposoby obejmują zainstalowanych modułów:W GHCi, jaka jest różnica między ": module" i "import"?

Prelude> :module Database.HDBC 
Prelude Database.HDBC> 

i

Prelude> import Database.HDBC 
Prelude Database.HDBC> 

Czy jest jakaś różnica między nimi? Jeśli nie, dlaczego duplikat komendy?

Zawsze stosować import, a teraz jestem zauważając :module używany w Real World Haskell's databases chapter.

+1

Myślę, że RWH został napisany przed zatwierdzonymi przez GHCI instrukcjami importu. –

Odpowiedz

9

Z GHCi docs:

Komenda :module zapewnia sposób zrobić dwie rzeczy, które nie mogą być zrobić ze zwykłymi import deklaracje:

  • :module wspiera * modyfikator na moduły, które otwiera pełny zakres najwyższego poziomu modułu, a nie tylko jego eksport.
  • Importowanie można usunąć z kontekstu, używając składni :module -M. Składnia import jest kumulatywna (jak w module Haskella), więc jest to jedyny sposób na odjęcie od zakresu.
Powiązane problemy