Haskell eksportuje aktualny moduł z dodatkowym importowanym modułem

96

Czy jest możliwe napisanie modułu w Haskell, który wyeksportuje moduł oprócz eksportu wszystkiego, co jest widoczne w środku?

Rozważmy następujący moduł:

module Test where
import A

f x = x

Ten moduł eksportuje wszystko, co jest zdefiniowane w środku, więc eksportuje, fale nie reeksportuje niczego importowanego z A.

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

module Test (
    module A,
    f
) where
import A

f x = x

Czy istnieje sposób na ponowne wyeksportowanie Ai wyeksportowanie wszystkiego, co zostało zdefiniowane w programie, Testbez konieczności jawnego pisania każdej funkcji zdefiniowanej w programie Test?

Wojciech Danilo
źródło

Odpowiedzi:

139

Jest proste rozwiązanie, wystarczy wyeksportować moduł z modułu:

module Test
    ( module Test
    , module A
    ) where

import Prelude()
import A
f x = x
Thomas M. DuBuisson
źródło
Wykorzystane tutaj .
PyRulez
Jakieś wyjaśnienie, dlaczego to działa? (Jakaś dokumentacja?)
PyRulez
1
@PyRulez Raport Haskella jest ostatecznym źródłem: haskell.org/onlinereport/haskell2010/…
Thomas M. DuBuisson