2014-12-25 3 views
5

WinBHCi가 내 .hs 파일을로드하고 컴파일하는 방법을 알 수 없습니다.하스켈 프로그래밍 (WinGHCi)에서 실행할 소스 파일 가져 오기

나는 단지이 다음과 같은 줄을 담고 있는지, 파일, C:\Users\Haskell\Source\hello.hs이 다음 Prelude> 프롬프트에서, 나는

:cd C:\Users\Haskell\Source\ 

아무것도 I 수단 있으리라 믿고있어하는 일이없는 실행하면

main = putStrLn "Hello, world!" 

명령이 성공적이었습니다. 그러나 실행할 때

:load hello.hs 

"[1 of 1] 컴파일 중입니다. 나의 메시지는 "서곡"을 "* 메인"에서 변경 내가 입력 :

ghc -o hello hello.hs 

그 후, 안녕하세요, 안녕하세요, 오, 어떻게 GHC에 대해 얘기 오류의 시리즈를 얻을 것이다, 그리고 HS는 "안됩니다 범위 안에. "

나는 올바른 디렉토리에 있습니다. 내 프로그램이 왜 실행되지 않습니까?

내 문제 중 하나는 디렉토리를 탐색 할 수 없다는 것입니다. 나는 :!dir이 파일을 나열하고 올바른 디렉토리에 있다고 알고 있지만 :load hello.hs은 여전히 ​​작동하지 않으며 범위 오류가 계속 발생합니다.

도움을 주시면 감사하겠습니다.

EDIT : 사용자가 * Main 프롬프트를 표시하면 프로그램이로드되고 컴파일되어 ghc 명령을 실행할 필요가 없다고 지적했습니다. 그렇다면 어떻게 운영할까요? Haskell.org에서는 "실행 파일 (Unix 시스템에서는 ./hello, Windows에서는 hello.exe)"을 실행할 수 있지만 exe 파일은 생성되지 않았습니다.

+1

원본 파일에 오류가있어 GHCi가 원본 파일을 성공적으로로드했으며 오류가 발생했다고 생각합니다. hello.hs를 게시하면 도움이됩니다. – snak

+0

hello.hs의 내용은 다음과 같습니다. main = putStrLn "Hello, world!" –

+1

@JoffreyBaratheon 귀하의 질문에 귀하의 마지막 의견에 대한 정보를 추가했습니다. 나중에 질문 아래의 "편집"을 클릭하여 질문을 편집하고 직접 이러한 정보를 추가하십시오. 질문을 스스로 포함 시키면 좋은 대답을 얻을 수있는 더 좋은 기회가됩니다. – Jubobs

답변

4

먼저 디렉토리로 이동 한 다음 ghci을 호출하는 것이 더 쉽습니다. Prelude에 들어가면 :l과 파일 이름을 사용할 수 있습니다.

또는 ghci을로드 한 다음 :l을 사용하고 파일의 정규화 된 경로를 사용할 수 있습니다.

편집 : 편집 내용을 읽은 후 코드를 잘 작성하는 것이 분명합니다. 일단 그것이 컴파일되었다고 말하면, ghc으로 다시 시도해 볼 아무런 이유가 없습니다 (나는 어쨌든 ghci에서 그렇게 할 수 있다고 생각하지 않습니다).

이제 컴파일되었으므로 거기에 정의 된 코드 및 데이터 유형 중 하나를 사용할 수 있습니다. 따라서 주 기능을 사용하려면 프롬프트에 main을 입력하십시오.

+0

좋아, 그래서 당신이 cmd에서 소스 파일을 탐색에 대해 말한 다음 ghci를로드했다. 나는 다음과 같이한다 : Prelude> : l hello.hs 그리고 나서 * Main> ghc -o hello hello.hs 그리고 나는 여전히 범위를 벗어난다. –

+0

프롬프트가'Main'으로 바뀌면 파일이로드되어 컴파일되었음을 의미합니다. 따라서'ghc'를 시도하고 실행할 필요는 없습니다. 파일에 정의 된 함수 및 데이터 유형 만 사용하면됩니다. –

+0

이미 컴파일 된 상태라고 말하면 어떻게 실행해야합니까? Haskell.org에서는 "실행 파일을 실행할 수 있습니다 (유닉스 시스템에서는 ./hello, Windows에서는 hello.exe)." hello.exe를 입력하면 작동하지 않습니다. 나는 지금 정말로 멍청하다고 느낀다. –