2011-11-12 3 views
5

Con il seguente modulo di esempio:Come controllare l'esportazione dei record in Haskell?

module Exp (initial, myval) where 
data State = State { i :: Int } 
initial = State { i = 123 } 
myval st = i st 

Dopo che carico il modulo in GHCI, posso vedere che i nomi State e i sono anche stati esportati. Posso ottenere i loro tipi e usarli. Come limitare l'esportazione in modo che vengano esportati solo initial (una scatola nera) e myval?

risposta

11

State e i non sono esportati, ma se si carica un interpretato modulo in ghci, allora tutte le definizioni di livello superiore di tale modulo sono portata. Per nascondere ciò che non hai esportato da ghci, compila il modulo e carica il modulo compilato, :l Exp risp ghci Exp. Quindi sono disponibili solo le entità esportate.