수색…


비고

GHCI는 GHC와 함께 번들로 제공되는 대화식 REPL입니다.

GHCi 시작하기

쉘 프롬프트에서 ghci 를 입력하여 GHCI를 시작하십시오.

$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Prelude> 

GHCi 기본 프롬프트 변경

기본적으로 GHCI의 프롬프트는 대화 형 세션에로드 한 모든 모듈을 표시합니다. 로드 된 모듈이 많으면 길어질 수 있습니다.

Prelude Data.List Control.Monad> -- etc

:set prompt 명령은이 대화식 세션에 대한 프롬프트를 변경합니다.

Prelude Data.List Control.Monad> :set prompt "foo> "
foo> 

프롬프트를 영구적으로 변경하려면 :set prompt "foo> "GHCi 설정 파일에 추가하십시오 .

GHCi 구성 파일

GHCi는 ~/.ghci 에있는 구성 파일을 사용합니다. 구성 파일은 시작시 GHCi가 실행할 일련의 명령으로 구성됩니다.

$ echo ":set prompt \"foo> \"" > ~/.ghci
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from ~/.ghci
foo> 

파일로드

:l 또는 :load 명령 유형 - 파일을 검사하고로드합니다.

$ echo "f = putStrLn \"example\"" > example.hs
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
ghci> :l example.hs
[1 of 1] Compiling Main               ( example.hs, interpreted )
Ok, modules loaded: Main.
ghci> f
example

GHCi 종료하기

다음과 :q 간단히 GHCi를 종료 할 수 있습니다 :q 또는 :quit

ghci> :q
Leaving GHCi.

ghci> :quit
Leaving GHCi.

또는 바로 가기 CTRL + D (OSX의 경우 Cmd + D )는 다음과 같은 효과를냅니다 :q .

이미로드 된 파일 다시로드

GHCi에 파일을로드 한 경우 (예 :l filename.hs ) GHCi 외부의 편집기에서 파일을 변경 한 경우 변경 사항을 사용하려면 :r 또는 :reload 를 사용하여 파일을 다시로드해야합니다 :reload 파일 이름을 다시 입력 할 필요가 없습니다.

ghci> :r
OK, modules loaded: Main.

ghci> :reload
OK, modules loaded: Main.

GHCi와의 중단 점

GHCi는 해석 된 코드 ( :loaded 코드)를 사용하여 즉시 사용할 수있는 중단 점을 지원합니다.

다음 프로그램으로 :

-- mySum.hs
doSum n = do
  putStrLn ("Counting to " ++ (show n))
  let v = sum [1..n]
  putStrLn ("sum to " ++ (show n) ++ " = " ++ (show v))

GHCi에로드 :

Prelude> :load mySum.hs 
[1 of 1] Compiling Main             ( mySum.hs, interpreted )
Ok, modules loaded: Main.
*Main> 

이제 줄 번호를 사용하여 중단 점을 설정할 수 있습니다.

*Main> :break 2
Breakpoint 0 activated at mySum.hs:2:3-39

GHCi는 다음 함수를 실행할 때 관련 줄에서 멈출 것입니다 :

*Main> doSum 12
Stopped at mySum.hs:2:3-39
_result :: IO () = _
n :: Integer = 12
[mySum.hs:2:3-39] *Main> 

우리가 프로그램에서 어디에 있는지 혼란 스러울 수 있으므로 다음을 사용할 수 있습니다 :list 명확히하기위한 :list :

[mySum.hs:2:3-39] *Main> :list
1  doSum n = do
2    putStrLn ("Counting to " ++ (show n))   -- GHCi will emphasise this line, as that's where we've stopped
3    let v = sum [1..n]

변수를 출력하고 실행을 계속할 수 있습니다.

[mySum.hs:2:3-39] *Main> n
12
:continue 
Counting to 12
sum to 12 = 78
*Main> 

여러 줄 문장

:{ 명령은 여러 줄 모드를 시작하고 :} 는 그것을 끝냅니다. 멀티 라인 모드에서 GHCi는 뉴 라인을 명령어의 끝이 아닌 세미콜론으로 해석합니다.

ghci> :{
ghci| myFoldr f z [] = z
ghci| myFoldr f z (y:ys) = f y (myFoldr f z ys)
ghci| :}
ghci> :t myFoldr
myFoldr :: (a -> b -> b) -> b -> [a] -> b


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow