2010-12-09 3 views
3

하스켈 모듈에서 이름의 일부만 내보내려고하지만 ghci는 숨겨진 이름까지도 기꺼이 액세스 할 수있게 해줍니다.하스켈 모듈 : 숨겨진 이름과 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을 사용하고 경우) 당신이 옳은 일을 할 것 같은

답변

5

GHCi가 모듈을로드하여 모듈을 검사하여 모듈의 범위에 포함시키는 것처럼 보입니다. 두 번째 힌트는 프롬프트 *Hiding>과 숨겨진 기능에 액세스 한 사실입니다.

편집 :
끝이 그것입니다 http://www.haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluation.html#id3045728

+2

감사합니다, 그게입니다. 나는 이것 같이 돌아 다닐 수있다 : Prelude> : l Hiding.hs [1 of 1] 숨기기 컴파일하기 (Hiding.hs, 해석 됨) 로드 된 모듈 : 숨기기. * 숨기기> : m 숨기기 > : m + 숨기기 숨기기> 그래도 어색해요. – oggy

+2

@oggy - ghci는 해석 모듈에서만이 작업을 수행합니다. 먼저 Hiding.hs를 컴파일하면 ghci가 개체 파일에서 모듈을 가져올 수 있으며 내 보낸 함수 만 표시됩니다. –

0

그것은 나에게 보인다. 다른 모듈에서 해당 모듈을 참조하려고 시도하면 hidden은 작동을 거절 할 것입니다. GHCI가 모든 것을 알고있을 수 있습니다. :)