lisp修改上一个图素_在Windows上安装Haskell
发布日期:2021-06-24 11:30:39 浏览次数:3 分类:技术文章

本文共 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许可协议。

转载地址:https://blog.csdn.net/weixin_32512381/article/details/112309350 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ad19 导出step 没有pcb_几款主流PCB软件哪个最好用,你用过几款?
下一篇:chi2inv函数 matlab_MATLAB概率和统计(2)

发表评论

最新留言

不错!
[***.144.177.141]2024年04月03日 21时07分05秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介【转自游戏蛮牛】 2019-04-28
ARCore1.2使用入门(二) ------ ARCore图片识别(unity开发) 2019-04-28
unity3D编辑器扩展 2019-04-28
ARCore研究文章合集(持续更新) 2019-04-28
ARCore1.2使用入门(三)------ cloud anchors 2019-04-28
Playable API:定制你的动画系统(转自官方文档) 2019-04-28
Unity功能记录(五)------ Android studio打包aar包后与unity互相通信 2019-04-28
Lua学习之路(十二) ------ Lua table(表) 2019-04-28
Lua学习之路(十三) ------ Lua 模块(相当于C#中的命名空间)与包 2019-04-28
Lua学习之路(十四) ------ Lua 元表(Metatable扩展普通表的行为) 2019-04-28
Unity中路径的疑难杂症剖析(转自洪流学堂) 2019-04-28
ET框架学习之路(二) ------ 制作单独的客户端(可不制作直接下载纯客户端版本) 2019-04-28
VisualStudio 如何使用UML呢?(转自简书雨落随风) 2019-04-28
Unity3D手游开发实践《腾讯桌球》客户端开发经验总结(转自GameRes游资网) 2019-04-28
常用正则表达式全在这里(转自Unity开发者俱乐部公众号) 2019-04-28
QFramework框架学习(一) ------ 单例模式 2019-04-28
QFramework框架学习(三) ------ 简易消息机制 2019-04-28
IOS&Android收集Log文件(转自雨松Mono Unity3D研究院) 2019-04-28
Vuforia功能记录(四) ------ 解决Vuforia+Unity自动打开摄像头的三种方法 2019-04-28
3D游戏开发套件指南(入门篇,转自Unity官方平台公众号) 2019-04-28