Haskell超简单环境搭建

需求:搭建一个灵活且通用的编写编译Haskell代码的方案。要求Windows,Linux,Mac三端通用,且迁移代码代价最小

首先找到一个最方便的Haskell编写IDE

选择方案有如下。IDEA+Haskell插件,Ecelipse+Haskell插件,VSCode+Hashkell插件,Vim+Haskell插件,Xmonad(没用过),Mac App Store的Haskell。

如果选择插件方案,需要考虑是采用Stack还是Cabal。目前Haskell开发推荐Stack工具

首先idea+haskell插件方案,Eclipse+插件功能太老,不能考虑。VSCode+Haskell插件有多个选择,但是没有快捷执行方案。Vim+Haskell插件适合大佬。Xmonad安装要求太高。

IDEA+Haskell插件功能,需要支持ghc-mod.该方案由于Cabal和Haskell的升级,已经不太适合。最后定的方案为Mac App Store的Haskell for Mac.

我目前使用的HFM版本为1.7.0(1527 MAS).软件直接下载安装即可。需要注意的是,HFM自带的GHC为8.6.4,对应的LTS为13.14。

使用时,按官方文档即可,如果需要安装lib,直接选择Target->Pageage Manager,输入关键字即可。我这里安装过mysql-haskell-0.8.4.2。

但是这里有一个问题,HFM不支持启动中断型应用。也就是如果你想启动一个Web服务器,那是不可能的。因为他的后台会不断的重启执行程序。所以只能考虑外部执行。

外部执行有两种方案:

1.本机执行。这里可以直接采用HFM的Target->Run/Install.这样就可以新开控制台来执行。

2.外机执行。毕竟生产环境不太可能采用MAC。所以需要找到一个方案来打包执行我们的代码。

这里以Centos 7 为例。首先大家可以安装一个裸环境,我的是Centos7.5

1) 执行 curl -sSL https://get.haskellstack.org/ | sh

2)stack upgrade

3)yum install gmp-devel  (因为我先安装了Cabal,采用runhaskell提示失败,感觉gmp-devel是需要的)

4) stack new helloworld new-template  来创建一个新的stack工程

至此我们完成了外机的编译环境搭建,接下来我们需要管理外机和HFC的版本(如果不关联还有什么意义呢)

1.打开项目下的stack.yaml.修改resolver的值为lts-13.14

2.在extra-deps下面添加需要的lib。例如

   extra-deps:

       -  extra-1.6.14

       -  mysql-haskell-0.8.4.2

3. 修改xxx.cabal,在build-depends下面添加需要的lib(这里就不细说了,可以参考其他文档)

4. 执行stack build .顺利的话会提示开始下载ghc-8.6.4和相关lib(视网络情况而定)

至此我们就使用了最佳的IDE和一个无关OS的编译方式,大家可以快乐的写Haskell代码了。

 

 

如果大家在使用Haskell方面有任何问题,欢迎留言

你可能感兴趣的:(Haskell)