2013-06-23 15 views
8

Czy możliwe jest użycie ekwiwalentu "importuj kwalifikowany" w GHCI z naszym modułem WŁASNYM? Coś takiego jak :m + qualified Data.List, co oczywiście nie działa.import zakwalifikowany w GHCI

Dzięki.

Odpowiedz

22

Po prostu wpisz import qualified Data.Text lub import qualified Data.Text as T wewnątrz ghci, tak jak w swoim kodzie.

+5

Należy pamiętać, że dodano to w GHC 7.0. – shachaf

+0

Bardzo mi przykro, miałem na myśli mój WŁASNY moduł. – vildric

+2

@vildric Co sprawia, że ​​uważasz, że Twój własny moduł jest inny niż moduł innej osoby? Po prostu "importuj kwalifikowane My.Own.Modules jako MOM", zakładając, że jest zainstalowany pakiet z modułem 'My.Own.Module' lub moduł jest w zasięgu za pomocą innych środków. –

15

nie wiem pretty, aby zrobić to, co chcesz, ale można udawać coś takiego:

  1. pierwsze, należy :load My/Module.hs aby załadować moduł.
  2. Użyj :module - My.Module, aby wyjść poza zakres.
  3. (Opcjonalnie.) Użyj import qualified My.Module as MM, aby dostosować go do zakresu.

Każdy moduł, o którym wie GHCi, jest automatycznie dostępny w pełni kwalifikowany, więc po kroku 2, My.Module.value będzie działał poprawnie. Krok 3 jest konieczny tylko wtedy, gdy chcesz użyć krótszego prefiksu.

Jeśli chcesz załadować wiele plików naraz, :load może to zrobić;

:load My/Module1.hs My/Module2.hs ... My/ModuleN.hs 

będzie działać poprawnie. Wprowadzi Cię w zakres *My.Module1, a następnie My.Module2 ... My.ModuleN będą dostępne w pełni kwalifikowane, jak wspomniano powyżej.

Aby uzyskać więcej informacji o GHCi, zawsze możesz sprawdzić the GHC User's Guide, Ch. 2: "Using GHCi"; szczególnie istotne sekcje to §2.2, "Loading source files" i §2.4.5, "What's really in scope at the prompt?".