2013-08-03 11 views
71

Czy można napisać moduł w Haskell, który re-eksportuje moduł oprócz eksportowania wszystkiego widoczny w środku?Moduł aktualnego eksportu Haskell z dodatkowym importowanym modułem

Rozważmy następujący moduł:

module Test where 
import A 

f x = x 

Ten moduł eksportuje wszystko zdefiniowane wewnątrz, więc eksportuje f ale nic nie reeksport importowane z A.

Z drugiej strony, jeśli chcę, aby ponownie wyeksportować moduł A:

module Test (
    module A, 
    f 
) where 
import A 

f x = x 

Czy istnieje sposób na reeksport A i eksport wszystko zdefiniowany w Test bez konieczności wyraźnie napisać każdy funkcja zdefiniowana w ramach Test?

Odpowiedz

107

Jest to proste rozwiązanie, po prostu wyeksportować moduł z modułem:

module Test 
    (module Test 
    , module A 
    ) where 

import Prelude() 
import A 
f x = x 
+1

+1 Tak, tak proste! –

+0

Exploited [tutaj] (https://github.com/ndmitchell/tagsoup/commit/1f1fff1e9ce4bd3233a2ef9607287b5018b516a7#diff-430b750c0b6fd0e9461c82565a1345dcR8). – PyRulez

+0

Jakiekolwiek informacje na temat tego, dlaczego to działa? (Każda dokumentacja?) – PyRulez

Powiązane problemy