5

我不知道如何让 WinGHCi 加载和编译我的.hs文件。

我有一个文件,C:\Users\Haskell\Source\hello.hs仅包含以下行:

main = putStrLn "Hello, world!"

如果在Prelude>提示符下,我运行

:cd C:\Users\Haskell\Source\

没有任何反应,我假设这意味着命令成功。但是,当我尝试运行

:load hello.hs

我收到“[1 of 1] Compiling Main. Ok, modules loaded: Main”消息。然后我的提示从“Prelude”变为“*Main”,然后我输入:

ghc -o hello hello.hs

之后,我会收到一系列关于 ghc、o、hello、hello 和 hs 如何“不在范围内”的错误。

我在正确的目录中。为什么我的程序无法运行?

我的问题之一是我无法浏览目录。我知道:!dir列出了文件,并且我在正确的目录中,但:load hello.hs仍然无法正常工作,并且我不断收到范围错误。

任何帮助,将不胜感激。

编辑:一位用户指出,如果我已经进入 *Main 提示符,那么我的程序已经加载并编译,我不需要运行 ghc 命令。如果是这样,我将如何运行它?Haskell.org 指出,“然后您可以运行可执行文件(Unix 系统上的 ./hello,Windows 上的 hello.exe)”,但尚未创建 exe。

4

1 回答 1

4

我发现先导航到目录然后调用ghci. 进入 Prelude 后,您可以使用:l和文件名。

或者,您可以加载ghci然后使用:l并使用文件的完全限定路径。

编辑: 阅读您的编辑后,很明显您的代码编译得很好。一旦它说它已经编译,就没有理由再次尝试这样做ghc(我认为你无论如何都不能从内部做到这 ghci一点)。

现在它已编译,您可以使用其中定义的任何代码和数据类型。因此,要使用您的 main 函数,只需在main提示符处输入*Main>

于 2014-12-25T03:51:33.607 回答