我无法弄清楚如何让WinGHCi加载和编译我的.hs
文件。
我有一个文件C:\Users\Haskell\Source\hello.hs
,只包含以下行:
main = putStrLn "Hello, world!"
如果在Prelude>
提示符下,我运行
:cd C:\Users\Haskell\Source\
没有任何反应,我假设这意味着命令成功。但是,当我尝试运行时
:load hello.hs
我得到一个" [1/1]编译主要。好的,加载模块:Main"信息。我的提示随后从" Prelude" to" * 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。
答案 0 :(得分:4)
我发现首先导航到目录然后调用ghci
更容易。进入Prelude后,您可以使用:l
和文件名。
或者,您可以加载ghci
,然后使用:l
并使用文件的完全限定路径。
修改强>
阅读完您的编辑后,很明显您的代码编译得很好。一旦它说它已经编译,就没有理由再次使用ghc
尝试这样做(我不认为你可以在ghci
内做到这一点)。
现在它已被编译,您可以使用其中定义的任何代码和数据类型。因此,要使用main函数,只需在main
提示符下键入*Main>
即可。