Haskell mengekspor modul saat ini dengan modul impor tambahan

96

Apakah mungkin untuk menulis modul di Haskell, yang mengekspor ulang modul selain mengekspor semua yang terlihat di dalamnya?

Mari pertimbangkan modul berikut:

module Test where
import A

f x = x

Modul ini mengekspor semua yang ditentukan di dalamnya, jadi modul ini mengekspor ftetapi tidak mengekspor ulang apa pun yang diimpor dari A.

Di sisi lain, jika saya ingin mengekspor ulang modul A:

module Test (
    module A,
    f
) where
import A

f x = x

Adakah cara untuk mengekspor ulang Adan mengekspor semua yang ditentukan Testtanpa perlu menulis secara eksplisit setiap fungsi yang ditentukan di dalamnya Test?

Wojciech Danilo
sumber

Jawaban:

139

Ada solusi sederhana, cukup ekspor modul dari modul:

module Test
    ( module Test
    , module A
    ) where

import Prelude()
import A
f x = x
Thomas M. DuBuisson
sumber
Dieksploitasi di sini .
PyRulez
Juga, ada wawasan tentang mengapa ini berhasil? (Ada dokumentasi?)
PyRulez
1
@PyRulez The Haskell Report adalah sumber definitif: haskell.org/onlinereport/haskell2010/…
Thomas M. DuBuisson