Module de courant d'exportation Haskell avec module importé supplémentaire

96

Est-il possible d'écrire un module en Haskell, qui réexporte un module en plus d'exporter tout ce qui est visible à l' intérieur?

Considérons le module suivant:

module Test where
import A

f x = x

Ce module exporte tout ce qui est défini à l' intérieur, donc il exporte fmais ne réexporte pas tout ce qui est importé A.

Par contre, si je souhaite réexporter le module A:

module Test (
    module A,
    f
) where
import A

f x = x

Existe-t-il un moyen de réexporter Aet d'exporter tout ce qui est défini dans Testsans avoir besoin d'écrire explicitement chaque fonction définie à l'intérieur Test?

Wojciech Danilo
la source

Réponses:

139

Il existe une solution simple, il suffit d'exporter le module depuis le module:

module Test
    ( module Test
    , module A
    ) where

import Prelude()
import A
f x = x
Thomas M. DuBuisson
la source
Exploité ici .
PyRulez le
Aussi, une idée de pourquoi cela fonctionne? (Toute documentation?)
PyRulez
1
@PyRulez Le rapport Haskell est la source définitive: haskell.org/onlinereport/haskell2010/…
Thomas M. DuBuisson