VSCode中搭建Haskell开发环境(2019)
前言
最近突然想学习一款Functional Programming Language,然后就果断选择了Haskell,结果在配置开发环境的时候搞得一头雾水QAQ,从VSCode换到Atom然后又从Atom换回VSCode,折腾一一天最后终于搞好了。然后打算在这里抒发一下自己的感慨。
准备
这里我用的是macOS,虽然可以用Homebrew安装,不过我还是从Hakell的官网下载回来安装的。当然也可以用Homebrew安装:
brew install haskell-stack brew install ghc brew install cabal-install
然后我们还是要给stack换镜像源。。。
先vim .stack/config.yaml
然后加上:
package-indices: - name: Tsinghua download-prefix: https://mirrors.tuna.tsinghua.edu.cn/hackage/package/ http: https://mirrors.tuna.tsinghua.edu.cn/hackage/00-index.tar.gz setup-info: "http://mirrors.tuna.tsinghua.edu.cn/stackage/stack-setup.yaml" urls: latest-snapshot: http://mirrors.tuna.tsinghua.edu.cn/stackage/snapshots.json lts-build-plans: http://mirrors.tuna.tsinghua.edu.cn/stackage/lts-haskell/ nightly-build-plans: http://mirrors.tuna.tsinghua.edu.cn/stackage/stackage-nightly/
安装完后就可以开始配置VSCode了。
配置
首先我们要在VSCode里面安装一大堆插件,主要是以下几个:
Haskell Syntax Highlighting Haskell ghc-mod haskell-linter Haskelly
其中Haskelly
是要求安装:
stack install intero QuickCheck stack-run # for a global installation stack build intero QuickCheck stack-run # for a local installation
然而。。。在安装stack-run
的时候应该也会报错QAQ,这个我也上Stackoverflow查了半天。。。最后找到的解决办法是按照它报错之后的要求把一大堆东西加到extra-deps
里面。
下面的方法来源于Github
根据报错的信息将要新增的内容加到.stack/global-project/stack.yaml
的extra-deps
里面,加完后大概长这样
extra-deps: #不要直接copy这个,按照报错的信息把东西copy上来,但基本上是这几样东西 - conduit-1.2.13.1 - conduit-extra-1.1.17 - resourcet-1.1.11 - streaming-commons-0.1.19
或者还有一个方法是这样的,先新建这样一个文档:.stack/global-project/stack-cabal-1.24.yaml
,然后在里面输入:
flags: {} extra-package-dbs: [] packages: [] extra-deps: [] resolver: lts-8.24
然后在安装stack-run
的时候输入:
stack --stack-yaml ~/.stack/global-project/stack-cabal-1.24.yaml install stack-run
理论上这样是没问题的(我自己是成功了的)
而Haskell ghc-mod
则要求安装ghc-mod
,但问题来了,如果直接stack install ghc-mod
的话是会报错的!然后我折腾了快半天都没找到解决办法,最后在找Atom的插件的时候发现了atom-haskell
这个插件,然后发现里面有适合于9102年的ghc-mod的安装办法。。。
stack --resolver lts-9 install ghc-mod
(出现这个问题的的主要原因其实是ghc-mod的原版已经很久没有维护了。。。)
然后。。。很可能会出现路径问题,应该就要export PATH=$ PATH:~/.local/bin
orz
完成这些步骤之后理论上就没问题的了。。。
继续
然后我们可以试着创建一个Haskell的Project
stack new my-project #自己项目的名字 cd my-project stack setup
然后我们用VScode打开这个新建的文件夹,然后配置一下插件
首先是haskell-linter
,我们在Executable Path
里面加上:/Users/(你的用户名)/.local/bin/hlint
(也就是hlint的绝对路径)
然后是Haskell ghc-mod
的,我们在Executable Path
上面写上stack
就可以了(虽然我也不知道为什么这样可以orz)
最后配置完长这样:
长这样OWO
当然这些插件的bug也挺多的QAQ,不过我觉得能用已经差不多了QWQ
总结
这个东西真的好折腾啊QAQ,虽然说如果要学习FP的话不想折腾完全可以直接装一个Visual Studio然后学F#的,但毕竟F#不是纯函数式语言。。。
不过好在东西已经折腾完了OWO
Cheers 🙂
简书的Markdown真让人崩溃,在Atom编辑好copy上来之后引用的的格式真是惨不忍睹QAQ,又要重新调一下。。。
原文地址:https://www.jianshu.com/p/d6e3add899dc
相关推荐
-
CanalSharp-mysql数据库binlog的增量订阅&消费组件Canal的.NET客户端 C#
2019-4-18
-
分布式系统关注点——99%的人都能看懂的「补偿」以及最佳实践 C#
2019-4-1
-
就是这么坑:Linq的延迟加载特性 C#
2019-4-3
-
C# 异步操作 async await C#
2019-5-10
-
MVC伪一个12306图片验证码 C#
2019-9-18
-
Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码) C#
2019-5-5
-
ASP.NET Core 静态文件 C#
2019-5-12
-
一个.NET Core开发者的Linux入门学习笔记 C#
2019-4-3
-
never下sqlcient C#
2019-7-2
-
C# – 为值类型重定义相等性 C#
2019-6-15