Haskell模块:隐藏名称和ghci

ogg*_*ggy 3 haskell module ghci name-hiding

我正在尝试从Haskell模块中导出一个名称的子集,但是ghci很高兴让我访问隐藏的名称.

module Hiding (shown, calc) where

calc = shown * hidden

shown :: Int
shown = 3

hidden :: Int
hidden = 2
Run Code Online (Sandbox Code Playgroud)

但是当我在ghci中尝试这个时,我得到:

Prelude> :l Hiding.hs 
[1 of 1] Compiling Hiding           ( Hiding.hs, interpreted )
Ok, modules loaded: Hiding.
*Hiding> hidden
2
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

(编辑:为了它的价值,我在Arch Linux上使用ghci 6.12.3)

Mar*_*gen 5

看起来GHCi正在加载您的模块供您检查,即将您置于模块的范围内.两个提示是提示*Hiding>和您访问隐藏功能的事实.

编辑:
结束那里是:http://www.haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluation.html#id3045728

  • 谢谢,就是这样.我可以这样解决它:Prelude>:l Hiding.hs [1 of 1]编译隐藏(Hiding.hs,解释)好的,模块加载:隐藏.*隐藏>:m -Hiding>:m +隐藏隐藏>虽然这很笨拙 (2认同)
  • @oggy - ghci只会为解释模块执行此操作.如果先编译Hiding.hs,ghci可以从目标文件中导入模块,只显示导出的函数. (2认同)