Real World Haskell开发指南(习题答案)

Posted by pzque on 2018-01-08     

前些时间刷real world haskell,特整理一下。

项目地址:https://github.com/pzque/realword-haskell

说明

haskell版本:8.2.0

resolver: lts10.2

stack:1.6.4

这是看”real world haskell”这本书的过程中积累的包括书中实例、习题答案以及功能累积到比较实用的程度然后写成模块的代码集。

这本书的在线中文版本:cnhaskell.com

整个目录是一个stack创建的项目,之所以用它是因为idea的haskell插件只能配合stack开发。

目录结构

contents里大多数是书里给的示例代码,然后还有根据自己的理解,在学习过程中写的一些探索性的代码。

exercises是每章的习题,因为习题是按照小节出的,有的小节有,有的小节没有,同时答案代码多短小精悍,所以这里文件按每章习题出现的顺序命名,每小节的题目放在一个文件里。比如”4_1.hs”包含第四章第一次习题的全部答案。

modules则是书里给的比较大的、能够实际使用的实例,以及我对它们的优化/修改/扩展。

如何使用

安装stack

首先按照 stack 官方文档 安装stack。

安装完成最好换成 清华的源 ,修改~/.stack/config.yaml(在 Windows 下是 %APPDATA%\stack\config.yaml), 加上:

1
2
3
4
5
6
7
8
9
10
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/

package-indices:
- name: Tsinghua
download-prefix: http://mirrors.tuna.tsinghua.edu.cn/hackage/package/
http: http://mirrors.tuna.tsinghua.edu.cn/hackage/00-index.tar.gz

构建

首先初始化一下haskekl环境(安装ghc等到~/.local/bin),在项目根目录执行

1
stack setup

然后build:

1
stack build

构建完成。

注意在第一次导入idea时必须构建完成且不出错。

配合idea进行开发

我用的是
intellij-haskell
这个插件,体验还不错,按照链接里的指示配置好就可以导入stack项目愉快玩耍了。

其实就是先在idea里装好插件,然后安装两个haskell的包:

1
stack install hindent stylish-haskell

然后idea里依次点Settings>Other Settings>Haskell,设置好这两个命令的路径,它们应该在~/.local/bin下。

就可以了。

使用ghci进行快速验证

repl还是很有用的,haskell的repl就是ghci,使用stack ghci启动它。

然后就可以敲haskell代码了。

还可以加载haskll源文件:

1
:load xxx.hs

查看帮助:

1
:help

查看变量类型:

1
:type xxx

查看变量/函数/类信息:

1
:info xxx

这是最常见的几条命令了。

你可以使用此种方式探索本项目内的各文件。