博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lisp修改上一个图素_在Windows上安装Haskell
阅读量:1531 次
发布时间:2019-04-21

本文共 2572 字,大约阅读时间需要 8 分钟。

7fa6ff26fbc8bbdb3e45451f86dfdac6.png

本学期北京大学开设《计算概论(A):函数式程序设计》课程,很多同学在Windows下安装Haskell开发环境遇到困难。这里我们描述在Windows上使用stack安装Haskell开发环境的方法。

本文的GitHub Pages链接:

Monad - 在Windows上安装GHC​krantz-xrf.github.io

安装stack

这里我们参考stack官方网站:

On Windows, you can download and install the Windows 64-bit Installer.

点击上方引文中的链接下载stack的安装程序并运行,如无特殊需求,选择默认的安装路径即可。

由于Windows下默认由260字节的路径长度限制,且stack管理的文件通常具有较深的目录层次,stack建议在Windows下设置STACK_ROOT=C:sr(安装程序的默认选项)。考虑到许多中国用户不喜欢安装在C盘,可以将STACK_ROOT改为D:sr等等。

使用stack安装GHC

stack可以用于管理Haskell编译器(GHC)以及Haskell库,这里我们将使用stack安装GHC。

安装

通常情况下,我们可以使用stack new创建新项目,并在编译该项目(stack build)时由stack自动安装对应版本的GHC。由于是学期初,我们尚未接触到这些内容,这里直接使用下列命令(以下简称stack setup)来安装GHC:

stack --resolver lts-16.15 setup

考虑到国内的实际情况,通常建议配置清华源:按照TUNA Hackage和TUNA Stackage的说明直接配置即可。在写作本文的时间,按上述步骤安装的stack版本是2.3.3,因此应该对应按照stack >= v2.1.1stack >= v2.3.1两节来修改配置文件。

提示:TUNA给出的配置文件路径是%APPDATA%stackconfig.yaml(要找到这个文件,首先在资源管理器的地址栏中输入%APPDATA%,再打开子目录stack,即可找到config.yaml;如果文件还不存在,可以手动创建)。由于我们修改了STACK_ROOT,需要修改的配置文件在%STACK_ROOT%config.yaml,例如按默认的STACK_ROOT=C:sr,全局配置文件就在C:srconfig.yaml

说明:上述命令中的--resolver lts-16.15表示要求stack使用LTS-16.15,这是写作本文时最新的LTS。建议自己到Stackage查看最新的LTS。使用这个配置主要是为了避免安装相对比较古老的8.6.5版本,Windows上无法使用的8.8.2版本,以及Windows 2004更新后变得不可用的8.8.3版本。关于这些版本的具体问题,可以查看GHC的Issues。

故障排除

在Windows上用stack安装GHC有时会遇到Permission Denied错误。尚不清楚这个问题的发生机理,但有绕过该问题的解决方法。我们很容易观察到,stack安装GHC的方法是下载一个.tar.xz压缩包,并使用下载的7z.exe7z.dll来解压文件,最后创建用于标记GHC安装成功的ghc-X.X.X.installed文件。

那么,由于stack失败的时候完成了下载.tar.xz的步骤,可以直接用7z.exe解压,并直接用echo命令创建标记文件:

./7z x ghc-8.8.4.tar.xz./7z x ghc-8.8.4.tarecho installed>ghc-8.8.4.installed

这样,重新运行stack setup命令后,就能继续完成随后的步骤了。当然,后续安装MSYS2依旧可能遇到相同问题,我们同样照此办理即可:

./7z x msys2-20180531.tar.xz./7z x msys2-20180531.tarecho installed>msys2-20180531.installed

确认安装已经完成(即成功运行一次stack setup)后,中间生成的.tar文件可以删除来减少空间占用;如果不需要留下原始安装文件以备未来重装,也可以连同stack自动下载的.tar.xz文件一起删除。这不会影响使用。

注意:如果使用了PowerShell的老版本,>不能用来重定向命令输出,这时可以使用echo installed| Out-File ghc-8.8.4.installed;或者干脆使用文本编辑器把“installed”保存在ghc-8.8.4.installed即可。

测试与庆祝

到这里,我们应该已经成功安装了stack和GHC。首先,测试一下GHC和GHCi的可用性:

$ stack exec -- ghc --versionThe Glorious Glasgow Haskell Compilation System, version 8.8.4$ stack exec -- ghciGHCi, version 8.8.3: https://www.haskell.org/ghc/  :? for helpPrelude> :qLeaving GHCi.

这说明我们已经正确安装了一个可用的GHC和stack

如果希望直接使用ghc/ghci命令启动GHC/GHCi,可以将它所在路径加入PATH。我们首先使用命令stack exec -- where.exe ghc得知GHC的所在路径,然后将提示的路径加入PATH即可。

尽管给出了上面的方法,但是我们不推荐这么做,因为stack可以管理多个版本的GHC(避免冲突),可以使用命令行选项选择GHC版本,例如:stack --compiler ghc-8.8.4 exec ghci

我们已经在Windows上获得了一个可用的Haskell开发环境了。下面我们就可以放烟花庆祝一下,然后开始愉快地使用GHC开发了。

本文遵守Attribution-NonCommercial-ShareAlike 4.0 International许可协议。

转载地址:http://wnudy.baihongyu.com/

你可能感兴趣的文章
MRP元素的缩写
查看>>
SAP DIMP行业包
查看>>
一封邮件, 就能看出你是不是足够专业
查看>>
ABAP 字符串操作
查看>>
给采购凭证分配合作伙伴方案
查看>>
【常识】高尔夫计分规则
查看>>
高尔夫球专业术语
查看>>
SAP and ABAP Memory总结
查看>>
程序间数据共享与传递(1):EXPORT/IMPORT、SAP/ABAP Memory
查看>>
程序间数据共享与传递(2):EXPORT/IMPORT、SAP/ABAP Memory
查看>>
程序间数据共享与传递(3):EXPORT/IMPORT、SAP/ABAP Memory
查看>>
ABAP如何在调试查看EXPORT/IMPORT 内存数据
查看>>
LTRIM、RTRIM和TRIM在ORACLE中的用法:
查看>>
oracle常用的时间格式转换
查看>>
使用优化器提示(Optimizer Hints)
查看>>
销售抬头文本配置方法
查看>>
销售文本程序的分配
查看>>
日期和时间函数
查看>>
后真相时代(post-truth)出现的原因及影响
查看>>
[SAP ABAP开发技术总结]动态语句、动态程序
查看>>