在Windows中编译Haskell程序:是否可以不下载Cygwin之类的东西?

在Windows中编译Haskell程序:是否可以不下载Cygwin之类的东西?,haskell,cygwin,Haskell,Cygwin,我正在阅读“学习Haskell for great good”,并且已经到达了I/O操作的章节。我正在使用Windows,并已下载GHCi和WinGHCi 我试图编译一个简单的程序,并在emacs上保存了一个文件,名为helloworld.hs,其中包含main=putStrLn“hello,world” 书上说 打开终端,导航到helloworld.hs所在的目录,然后输入以下内容: $ ghc --make helloworld 但是,如果我在GHCi和WinGHCi上输入$ghc--ma

我正在阅读“学习Haskell for great good”,并且已经到达了I/O操作的章节。我正在使用Windows,并已下载GHCi和WinGHCi

我试图编译一个简单的程序,并在emacs上保存了一个文件,名为
helloworld.hs
,其中包含
main=putStrLn“hello,world”

书上说

打开终端,导航到
helloworld.hs
所在的目录,然后输入以下内容:

$ ghc --make helloworld
但是,如果我在GHCi和WinGHCi上输入
$ghc--make helloworld
,我会收到如下错误,可能是因为我需要在其他地方输入
$ghc--make helloworld

<interactive>:7:1: error:
    parse error on input ‘$’
    Perhaps you intended to use TemplateHaskell
:7:1:错误:
对输入“$”的分析错误
也许您打算使用TemplateHaskell
事实上,在该书的在线版(此处:)中,作者指出:

在本章中,我假设您正在使用unix-y环境学习Haskell。如果您使用的是Windows,我建议您下载Cygwin,这是一个类似Linux的Windows环境,也就是您所需要的

问题1:为了能够通过输入
$ghc--make helloworld
编译程序,我是否需要下载Cygwin或其他类似的东西

我问这个问题,因为如果有其他编译程序的方法,知道它会非常有用,因为我在一台大学计算机上,未经允许不能下载像Cygwin这样的东西。(即使获得许可,这也可能是不可能的,这取决于Cygwin的要求)


问题2:鉴于只有我所在大学的技术人员在复活节期间离开,而且只有他们可以在这台计算机上下载东西,我如何继续进行I/O操作一章?是否可以继续,但忽略涉及编译程序的部分?

在许多Unix和Linux shell中(至少在我最熟悉的Bash中),默认提示是
$
。这就是shell显示的内容

在Windows上,打开命令提示符时,通常会看到如下内容:

C:\Users\mark>
(这是我的提示。)

虽然指令通常包括
$
提示,以指示您希望在命令提示下输入的代码,但不希望您键入
$
。只需键入
ghc——创建helloworld
,然后按Enter键


此外,您不需要从GHCi内部执行此操作,而是从命令行执行此操作
ghc
是一个命令行可执行文件(一个
.exe
),就像git一样。它必须位于您的
路径
,否则,您必须在每次运行可执行文件时键入完整路径。

您已经下载了ghci,即解释器。在我看来,完全可以用它来学习(它也可以加载源代码),但您需要运行一些其他命令。我不知道您的安装是否包含编译器,我不会对此作任何假设

顺便说一句,您已经在解释器中键入了命令,错误消息是针对该解释器的

ps:要从解释器执行与“ghc--make”相同的操作,请运行:

:load <file>
:加载

是的,它将自动递归到depenzecies。你可以使用:help来学习其他命令

当我输入
ghc--make helloworld
并点击回车键时,出现了:
ghc:unrecogned flag:--你的意思是:-D-F-H用法:对于基本信息操作,请尝试“--help”选项
@user65526这是一个不同的问题:)你可能会更幸运地添加一个新问题,因为我不知道这个问题的答案。我强烈建议你安装。它包含了所需的一切,并且没有依赖性。特别是它包含了
stack
,这是Haskell IMHO不可避免的工具。这听起来很疯狂,但我如何确定它是否已下载到计算机上?大学技术人员做到了(我们不允许在大学电脑上下载东西),但是你说你下载了GHCi。所以我不明白你说什么。你是说GHCi是由技术人员下载的?是的,不是我下载的(我不能下载,但只能由他们下载)。我已经使用winGHCi和GHC好几个星期了,从来都不需要使用命令行。在学习基础知识的同时,你不需要Haskell平台。GHC和GHCi就足够了。我如何确定整个Haskell平台是否已下载到计算机上(我没有下载,我大学的技术人员下载了)?对不起,我不知道。我想说,如果您没有从下载并安装它,那么可能您没有。我发现我没有
堆栈
,在命令行中输入
堆栈--version
,这导致
“堆栈”不能识别为内部或外部命令、可操作程序或批处理文件。
。因此,在计算机上安装winGHCi和GHCi的我所在大学的技术人员没有安装完整的Haskell平台。这是生产使用的必要条件,但正如我所说的,学习GHCi应该是足够的,我选择的策略只是
:l helloworld
,忘记了按照书中的建议尝试编译。我希望这不会影响到下一章的内容。