2011-11-12 5 views
5

Con el módulo de la muestra siguiente:¿Cómo controlar la exportación de registros en Haskell?

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

Después de cargar el módulo en GHCi, puedo ver que los State y i nombres también se han exportado. Puedo obtener sus tipos y usarlos. ¿Cómo limito la exportación para que solo se exporten initial (una caja negra) y myval?

Respuesta

11

State y i no se exportan, pero si se carga un interpretarse módulo en ghci, a continuación, todas las definiciones de alto nivel de ese módulo son en su alcance. Para ocultar lo que no exportó desde ghci, compile el módulo y cargue el módulo compilado, :l Exp resp ghci Exp. Entonces solo las entidades exportadas están disponibles.

Cuestiones relacionadas