módulos de Haskell: nombres y ghci ocultos
-
10-10-2019 - |
Pregunta
Estoy tratando de exportar sólo un subconjunto de nombres de un módulo de Haskell, pero ghci felizmente me permite el acceso incluso los nombres ocultos.
module Hiding (shown, calc) where
calc = shown * hidden
shown :: Int
shown = 3
hidden :: Int
hidden = 2
Sin embargo, cuando se trata de esto en ghci me sale:
Prelude> :l Hiding.hs
[1 of 1] Compiling Hiding ( Hiding.hs, interpreted )
Ok, modules loaded: Hiding.
*Hiding> hidden
2
¿Qué estoy haciendo mal?
(Editar: para lo que vale la pena, estoy usando ghci 6.12.3 en Arch Linux)
Solución
Parece que GHCi está cargando el módulo para que usted pueda inspeccionar él, es decir, que le pone en el alcance del módulo. Dos consejos que son en la *Hiding>
rápido, y el hecho de que ha accedido a la función oculta.
Editar:
Termina ahí es: http: // www. haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluation.html#id3045728
Otros consejos
A mi me parece como que ha hecho lo correcto. Si intenta hacer referencia a ese módulo a otro módulo apuesto hidden
se niega a trabajar. Podría ser que GHCi lo sabe todo:)