2014-04-09 9 views
5

Come posso riesportare moduli importati qualificati in haskell? È possibile?Come posso riesportare moduli importati qualificati?

Esempio: Ho due file. Il file Utils.hs con il codice:

module Utils (...) where 

import qualified Data.Map as Map 

e il file main.hs:

import Utils 

main = putStrLn $ show $ Map.fromList [(1,2),(3,4)] 

Cosa devo mettere al posto del ... nel file Utils.hs in modo che il file di cui sopra compila e stampa fromList [(1,2),(3,4)] al uscita standard?

Obiettivo: Dopo aver importato Utils.hs in un altro file via import Utils voglio avere accesso alle funzioni e tipi di Data.Map con il codice Map.<function or data name>, vale a dire in modo che con la scrittura import Utils non devo scrivere import qualified Data.Map as Map più. È possibile?

Nota: C'è una domanda simile a Haskell re-export module in addition to everything defined within module. Sfortunatamente la risposta non aiuta in questa situazione.

Quello che ho provato finora: Il seguente codice di

module Utils (module Map) where 

import qualified Data.Map as Map 

compila, ma ottengo l'errore main.hs:3:26: Not in scope: `Map.fromList' se provo a compilare main.hs.

+2

Export moduli qualificati è impossibile: http://stackoverflow.com/questions/3207647/ghc-refuses-to- moduli qualificati per l'esportazione – user2407038

+0

@ user2407038: Grazie per il collegamento. Purtroppo non sono riuscito a trovare la soluzione (vedi la mia domanda estesa). Puoi fornire un esempio in esecuzione? –

risposta

7

Quello che stai chiedendo non è possibile. Map.fromList si risolverà con successo solo se c'è un'importazione della forma

import [qualified] Map 

o

import [qualified] ... as Map 
Problemi correlati