Модули Haskell: скрытые имена и ghci - PullRequest
3 голосов
/ 09 декабря 2010

Я пытаюсь экспортировать только подмножество имен из модуля 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

Что я делаю не так?

(Правка: для чего стоит, я использую ghci 6.12.3 в Arch Linux)

Ответы [ 2 ]

5 голосов
/ 09 декабря 2010

Похоже, GHCi загружает ваш модуль, чтобы вы могли его проверить, т.е. Два подсказки: подсказка *Hiding> и тот факт, что вы получили доступ к скрытой функции.

Edit:
Конец там это: http://www.haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluation.html#id3045728

0 голосов
/ 09 декабря 2010

Мне кажется, ты поступил правильно.Если вы попытаетесь сослаться на этот модуль из другого модуля, я держу пари, что hidden отказывается работать.Может быть, GHCI всезнающий :) 1002 *

...