2011-11-12 13 views
5

z następujących modułów próbki:Jak kontrolować eksport rekordów w Haskell?

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

Po załadować moduł w GHCI, widzę, że nazwy State i i zostały również eksportowane. Mogę zdobyć ich typy i wykorzystać je. Jak ograniczyć eksport, aby eksportować tylko initial (czarne pudełko) i myval?

Odpowiedz

11

State i i nie są eksportowane, ale jeśli załadowania interpretować moduł w ghci, wtedy wszystkie definicje najwyższym poziomie tego modułu znajdują się w zasięgu. Aby ukryć to, czego nie eksportowałeś z ghci, skompiluj moduł i załaduj skompilowany moduł, :l Exp lub ghci Exp. Wtedy dostępne są tylko eksportowane jednostki.