vlambda博客
学习文章列表

题外话:2020 年该怎么用 Intellij IDEA 搭建 Haskell 环境

由于对函数式编程了解的越多,我最近就越感觉 Kotlin 的语法还不够“激进”,于是我颇想尝试一下真正的纯函数式语言,说到纯函数式语言,最有名的应该就是 Haskell 了。Kotlin 为传统的 Java 开发者开启了函数式的大门,但如果你想了解的更多,学学 Haskell 是个非常棒的选择。


由于是一门“学院派”的小众语言,Haskell 不仅够酷,而且使用人数也足够少😭,所以在网上虽然能找到少量的搭建环境的教程,但是很可能由于没有更新而导致里面的方法目前已经无法正常使用。本文记录一下我的踩坑记录,并总结了一套在 Kotlin/Java 开发者最熟悉的环境——Intellij IDEA 下用最简单的方法搭建 Haskell 环境的记录。


注意,本文基于 macOS。


安装 Haskell Stack


Haskell Stack 是一个非常有用的命令行工具,它可以让你的工具安装、编译、构建等工作一条龙完成。我们可以使用官方推荐的方式安装,既使用以下命令:


curl -sSL https://get.haskellstack.org/ | sh


这种方式可以安装最新的 Haskell Stack,但是由于国内网络环境的问题,这种方式有时无法成功,那么我们也可以用 Homebrew 来安装:


brew install haskell-stack


安装完毕之后可以用以下命令验证安装是否成功:


stack --version


虽然安装成功了,但是 Homebrew 经常无法安装 Haskell Stack 的新版本,例如,我安装的时候,最新版本是 2.3.1,而 Homebrew 安装的则是 2.1.3 版本。所以在安装完成以后执行命令:


stack upgrade


这样就可以升级至 Haskell Stack 的最新版本。


使用 Haskell Stack 安装其他工具


Haskell Stack 安装完成以后,我们需要使用它来安装一些我们必须的工具,首先执行命令:


stack setup


这会使 Haskell Stack 初始化,并为我们自动安装 GHC(Haskell 的编译器)。


然后我们还需要安装 cabal(Haskell 的包管理工具):


stack install cabal


实际上这样我们就可以写代码了,但是由于我们想有更好的体验,我也建议安装 hlint(Haskell 的代码缩进检查):


stack install hlint


网上有的教程还推荐安装 hindent 和 stylish-haskell,用 stack install 命令安装,而 stylish-haskell 虽然可以安装,但是我还没发现它是干嘛用的,想装的也可以装一下。


配置 Intellij IDEA


Intellij IDEA 相信大家电脑里都有,如果能用一个 IDE 做所有的事,我也懒得再弄一个完全不熟悉的新环境了,所以我们为 Intellij IDEA 安装 Haskell 插件。


直接在插件的 Marketplace 中搜索“haskell”,我们能看到搜索结果中有两个插件,一个是 Intellij-Haskell,另一个是 HaskForce。从维护时间上来看 Intellij-Haskell 的维护时间是今年 4 月,比 HaskForce 的去年 9 月更近,所以我们直接安装 Intellij-Haskell。


创建 Haskell 工程


虽然我们已经有了 Intellij-Haskell,但是还是无法使用 Intellij IDEA 来智能的创建 Haskell 工程,我们仍然需要使用 Haskell Stack 在命令行里创建。


首先从命令行进入到你想存放工程文件的目录下,然后使用以下命令:


stack new <project name>


如果你了解工程模板,也可以在工程的名字后面加上模板的名字,例如 sample:


stack new hello-test sample


创建完成之后从命令行进入到工程的目录,然后还要执行两个步骤,首先,初始化:


stack init


之后再 build:


stack build


现在新工程已经准备好了。


Write the F**king Haskell


现在用 Intellij IDEA  打开我们刚才的工程,具体方法是选择菜单的:File -> New -> Project from Existing Sources,然后勾选“Import project from external model”,再选择 Haskell Stack,最后它会让你选择 SDK,这时候我们可以在列表中发现我们已经安装的 Haskell Stack,最后点击 Finish 就完成了。


现在准备运行“Hello Word”,找到工程中的 Main.hs 文件,然后输入以下代码:


main :: IO ()main = print "Write the F**king Haskell"


最后再配置一下 Configuration,也就是点击 Intellij IDEA 菜单下方的“锤子”和“三角形运行符号”中间的那个选项,再点加号,选择 Haskell Stack Runner,最后在 name 栏中随便输入一个名字(也可以不输),然后点击 OK 就行了。现在我们即使后续学习过程中任意修改代码,只要点击“三角形运行标志”就能重新编译运行。


踩坑记录


1.不要配置国内的源。网上有些教程会教我们修改 config.yaml 文件来配置清华或中科大的源,这样可以提高下载速度,但是本人亲测,这些源由于没有更新,目前一旦配置,无论怎样,下载都会失败,所以请继续使用官方源,如果嫌速度慢,可以尝试为命令行工具配置代理。