Haskell експортує поточний модуль з додатковим імпортованим модулем


96

Чи можна написати модуль у Haskell, який реекспортує модуль на додаток до експорту всього видимого всередині?

Давайте розглянемо наступний модуль:

module Test where
import A

f x = x

Цей модуль експортує все визначене всередині, тому експортує, fале не реекспортує нічого, що імпортується A.

З іншого боку, якщо я хочу повторно експортувати модуль A:

module Test (
    module A,
    f
) where
import A

f x = x

Чи є спосіб реекспортувати Aта експортувати все, що визначено в, Testбез необхідності явного запису кожної функції, визначеної всередині Test?

Відповіді:


139

Є просте рішення, просто експортуйте модуль з модуля:

module Test
    ( module Test
    , module A
    ) where

import Prelude()
import A
f x = x

Експлуатується тут .
PyRulez

Крім того, будь-яке розуміння того, чому це працює? (Будь-яка документація?)
PyRulez

1
@PyRulez Звіт Хаскелла є остаточним джерелом: haskell.org/onlinereport/haskell2010/…
Томас М. Дюбюссон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.