3

Haskellモジュールから名前のサブセットだけをエクスポートしようとしていますが、ghciを使用すると、非表示の名前にもアクセスできます。

module Hiding (shown, calc) where

calc = shown * hidden

shown :: Int
shown = 3

hidden :: Int
hidden = 2

しかし、これをghciで試してみると、次のようになります。

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

私は何が間違っているのですか?

(編集:その価値のために、私はArchLinuxでghci6.12.3を使用しています)

4

2 に答える 2

5

GHCi があなたのモジュールを検査するためにロードしているようです。つまり、あなたをモジュールのスコープに入れています。そのための 2 つのヒントは、プロンプト*Hiding>と、隠し機能にアクセスしたという事実です。

編集:
終わりです: http://www.haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluation.html#id3045728

于 2010-12-09T13:07:47.627 に答える
0

あなたが正しいことをしたように私には見えます。そのモジュールを別のモジュールから参照しようとするとhidden、動作を拒否するに違いありません。GHCIはすべてを知っているのかもしれません:)

于 2010-12-09T12:55:51.940 に答える