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)

¿Fue útil?

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:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top