Haskell趣学指南

Haskell趣学指南
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [斯洛文尼亚] , ,
2014-01
版次: 1
ISBN: 9787115335593
定价: 69.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 301页
字数: 450千字
正文语种: 简体中文
原版书名: Learn You a Haskell for Great Good!
79人买过
  •   《新锐编程语言集萃:Haskell趣学指南》是一本讲解Haskell这门函数式编程语言的入门指南,语言通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Haskell的基础知识讲起,涵盖了所有的基本概念和语法,内容涉及基本语法、递归、类型和类型类、函子、applicative函子、monad、zipper及所有Haskell重要特性和强大功能。
      《新锐编程语言集萃:Haskell趣学指南》适合对函数式编程及Haskell语言感兴趣的开发人员阅读。 作者介绍
    MiranLipova?a斯洛文尼亚共和国卢布尔雅那城的一位计算机科学专业的学生。除了对Haskell的狂热,他还喜欢拳击,玩低音吉他,当然还有画画。

    译者介绍
    李亚舟毕业于山东理工大学,现就职于IBMLTC,从事Linux发行版相关工作。对内核、体系结构、编程语言及技术翻译有浓厚兴趣,敬仰那些孜孜不倦地精益求精的人们。

    宋方睿本科生,清华大学开源镜像站维护者,blue-lotus战队成员,热爱算法和程序设计语言理论,关注高性能计算、自然语言处理及前端技术。个人博客http://maskray.me。 第1章 各就各位,预备!
    1.1 调用函数
    1.2 小朋友的第一个函数
    1.3 列表入门
    1.3.1 拼接列表
    1.3.2 访问列表中的元素
    1.3.3 嵌套列表
    1.3.4 比较列表
    1.3.5 更多列表操作
    1.4 得州区间
    1.5 我是列表推导式
    1.6 元组
    1.6.1 使用元组
    1.6.2 使用序对
    1.6.3 找直角三角形
    第2章 相信类型
    2.1 显式类型声明
    2.2 Haskell的常见类型
    2.3 类型变量
    2.4 类型类入门
    2.4.1 Eq类型类
    2.4.2 Ord类型类
    2.4.3 Show类型类
    2.4.4 Read类型类
    2.4.5 Enum类型类
    2.4.6 Bounded类型类
    2.4.7 Num类型类
    2.4.8 Floating类型类
    2.4.9 Integeral类型类
    2.4.10 有关类型类的最后总结
    第3章 函数的语法
    3.1 模式匹配
    3.1.1 元组的模式匹配
    3.1.2 列表与列表推导式的模式匹配
    3.1.3 As模式
    3.2 注意,哨卫!
    3.3 where?!
    3.3.1 where的作用域
    3.3.2 where中的模式匹配
    3.3.3 where块中的函数
    3.4 let
    3.4.1 列表推导式中的let
    3.4.2 GHCi中的let
    3.5 case表达式
    第4章 你好,递归
    4.1 不可思议的最大值
    4.2 更多的几个递归函数
    4.2.1 replicate
    4.2.2 take
    4.2.3 reverse
    4.2.4 repeat
    4.2.5 zip
    4.2.6 elem
    4.3 快点,排序!
    4.3.1 算法思路
    4.3.2 编写代码
    4.4 递归地思考
    第5章 高阶函数
    5.1 柯里函数
    5.1.1 截断
    5.1.2 打印函数
    5.2 再来点儿高阶函数
    5.2.1 实现zipWith
    5.2.2 实现flip
    5.3 函数式程序员工具箱
    5.3.1 map函数
    5.3.2 filter函数
    5.3.3 有关map与filter的更多示例
    5.3.4 映射带有多个参数的函数
    5.4 lambda
    5.5 折叠纸鹤
    5.5.1 通过foldl进行左折叠
    5.5.2 通过foldr进行右折叠
    5.5.3 foldl1函数与foldr1函数
    5.5.4 折叠的几个例子
    5.5.5 另一个角度看折叠
    5.5.6 无限列表的折叠
    5.5.7 扫描
    5.6 有$的函数应用
    5.7 函数组合
    5.7.1 带有多个参数函数的组合
    5.7.2 Point-Free风格
    第6章 模块
    6.1 导入模块
    6.2 使用模块中的函数求解问题
    6.2.1 统计单词数
    6.2.2 干草堆中的缝纫针
    6.2.3 凯撒密码沙拉
    6.2.4 严格左折叠
    6.2.5 寻找酷数
    6.3 映射键与值
    6.3.1 几乎一样好:关联列表
    6.3.2 进入Data.Map
    6.4 构造自己的模块
    6.4.1 几何模块
    6.4.2 模块的层次结构
    第7章 构造我们自己的类型和类型类
    7.1 定义新的数据类型
    7.2 成型
    7.2.1 借助Point数据类型优化Shape数据类型
    7.2.2 将图形导出到模块中
    7.3 记录语法
    7.4 类型参数
    7.4.1 要不要参数化我们的汽车?
    7.4.2 末日向量
    7.5 派生实例
    7.5.1 相同的人
    7.5.2 告诉我怎么读
    7.5.3 法庭内保持秩序!
    7.5.4 一周的一天
    7.6 类型别名
    7.6.1 使我们的电话本更好看些
    7.6.2 参数化类型别名
    7.6.3 向左走,向右走
    7.7 递归数据结构
    7.7.1 优化我们的列表
    7.7.2 种一棵树
    7.8 类型类
    7.8.1 深入Eq类型类
    7.8.2 TrafficLight数据类型
    7.8.3 子类化
    7.8.4 作为类型类实例的带参数类型
    7.9 Yes-No类型类
    7.10 Functor类型类
    7.10.1 Maybe函子
    7.10.2 树也是函子
    7.10.3 Either a函子
    7.11 kind与无名类型
    第8章 输入与输出
    8.1 纯粹与非纯粹的分离
    8.2 Hello, World!
    8.3 组合I/O操作
    8.3.1 在I/O操作中使用let
    8.3.2 反过来
    8.4 几个实用的I/O函数
    8.4.1 putStr
    8.4.2 putChar
    8.4.3 print
    8.4.4 when
    8.4.5 sequence
    8.4.6 mapM
    8.4.7 forever
    8.4.8 forM
    8.5 I/O操作回顾
    第9章 更多的输入输出操作
    9.1 文件和流
    9.1.1 输入重定向
    9.1.2 从输入流获取字符串
    9.1.3 转换输入
    9.2 读写文件
    9.2.1 使用withFile函数
    9.2.2 bracket的时间到了
    9.2.3 抓住句柄
    9.3 TODO列表
    9.3.1 删除条目
    9.3.2 清理
    9.4 命令行参数
    9.5 关于TODO列表的更多有趣的事
    9.5.1 一个多任务列表
    9.5.2 处理错误的输入
    9.6 随机性
    9.6.1 掷硬币
    9.6.2 更多随机函数
    9.6.3 随机性和I/O
    9.7 字节串
    9.7.1 严格的和惰性字节串
    9.7.2 用字节串复制文件
    第10章 函数式地解决问题
    10.1 逆波兰式计算器
    10.1.1 计算RPN表达式
    10.1.2 写一个RPN函数
    10.1.3 添加更多的操作符
    10.2 从希思罗机场到伦敦
    10.2.1 计算最快的路线
    10.2.2 在Haskell中表示道路系统
    10.2.3 实现计算最佳路径的函数
    10.2.4 从输入获取道路系统
    第11章 applicative函子
    11.1 函子再现
    11.1.1 作为函子的I/O操作
    11.1.2 作为函子的函数
    11.2 函子定律
    11.2.1 定律1
    11.2.2 定律2
    11.2.3 违反定律
    11.3 使用applicative函子
    11.3.1 向applicative问好
    11.3.2 Maybe applicative函子
    11.3.3 applicative风格
    11.3.4 列表
    11.3.5 IO也是applicative函子
    11.3.6 函数作为applicative
    11.3.7 zip列表
    11.3.8 applicative定律
    11.4 applicative的实用函数
    第12章 Monoid
    12.1 把现有类型包裹成新类型
    12.1.1 用newtype创建类型类的实例
    12.1.2 关于newtype的惰性
    12.1.3 type、newtype和data三者的对比
    12.2 关于那些monoid
    12.2.1 Monoid类型类
    12.2.2 monoid定律
    12.3 认识一些monoid
    12.3.1 列表是monoid
    12.3.2 Product和Sum
    12.3.3 Any和All
    12.3.4 Ordering monoid
    12.3.5 Maybe monoid
    12.4 monoid的折叠
    第13章 更多monad的例子
    13.1 升级我们的applicative函子
    13.2 体会Maybe
    13.3 Monad类型类
    13.4 一往无前
    13.4.1 代码,代码,代码
    13.4.2 我要飞走
    13.4.3 线上的香蕉
    13.5 do记法
    13.5.1 按我所说的去做
    13.5.2 我皮埃尔又回来了
    13.5.3 模式匹配和计算失败
    13.6 列表monad
    13.6.1 do记法和列表推导式
    13.6.2 MonadPlus和guard函数
    13.6.3 马的探索
    13.7 monad定律
    13.7.1 左单位元
    13.7.2 右单位元
    13.7.3 结合律
    第14章 再多一些monad
    14.1 Writer?我没听说过啊!
    14.1.1 monad赶来营救
    14.1.2 Writer类型
    14.1.3 对Writer使用do记法
    14.1.4 给程序添加日志
    14.1.5 低效的列表构造
    14.1.6 使用差分列表
    14.1.7 比较性能
    14.2 Reader?呃,不开玩笑了
    14.2.1 作为monad的函数
    14.2.2 Reader monad
    14.3 带状态计算的优雅表示
    14.3.1 带状态的计算
    14.3.2 栈和石头
    14.3.3 State monad
    14.3.4 获取和设置状态
    14.3.5 随机性和State monad
    14.4 墙上的Error
    14.5 一些实用的monad式的函数
    14.5.1 liftM和它的朋友们
    14.5.2 join函数
    14.5.3 filterM
    14.5.4 foldM
    14.6 创建一个安全的RPN计算器
    14.7 组合monad式的函数
    14.8 创建monad
    第15章 zipper
    15.1 在树上移动
    15.1.1 面包屑
    15.1.2 向上走
    15.1.3 处理焦点处的树
    15.1.4 一路走到顶端,那里的空气既新鲜又干净
    15.2 在列表上定位
    15.3 一个非常简单的文件系统
    15.3.1 为文件系统创建一个zipper
    15.3.2 操作文件系统
    15.4 小心行事
    15.5 谢谢阅读!
  • 内容简介:
      《新锐编程语言集萃:Haskell趣学指南》是一本讲解Haskell这门函数式编程语言的入门指南,语言通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Haskell的基础知识讲起,涵盖了所有的基本概念和语法,内容涉及基本语法、递归、类型和类型类、函子、applicative函子、monad、zipper及所有Haskell重要特性和强大功能。
      《新锐编程语言集萃:Haskell趣学指南》适合对函数式编程及Haskell语言感兴趣的开发人员阅读。
  • 作者简介:
    作者介绍
    MiranLipova?a斯洛文尼亚共和国卢布尔雅那城的一位计算机科学专业的学生。除了对Haskell的狂热,他还喜欢拳击,玩低音吉他,当然还有画画。

    译者介绍
    李亚舟毕业于山东理工大学,现就职于IBMLTC,从事Linux发行版相关工作。对内核、体系结构、编程语言及技术翻译有浓厚兴趣,敬仰那些孜孜不倦地精益求精的人们。

    宋方睿本科生,清华大学开源镜像站维护者,blue-lotus战队成员,热爱算法和程序设计语言理论,关注高性能计算、自然语言处理及前端技术。个人博客http://maskray.me。
  • 目录:
    第1章 各就各位,预备!
    1.1 调用函数
    1.2 小朋友的第一个函数
    1.3 列表入门
    1.3.1 拼接列表
    1.3.2 访问列表中的元素
    1.3.3 嵌套列表
    1.3.4 比较列表
    1.3.5 更多列表操作
    1.4 得州区间
    1.5 我是列表推导式
    1.6 元组
    1.6.1 使用元组
    1.6.2 使用序对
    1.6.3 找直角三角形
    第2章 相信类型
    2.1 显式类型声明
    2.2 Haskell的常见类型
    2.3 类型变量
    2.4 类型类入门
    2.4.1 Eq类型类
    2.4.2 Ord类型类
    2.4.3 Show类型类
    2.4.4 Read类型类
    2.4.5 Enum类型类
    2.4.6 Bounded类型类
    2.4.7 Num类型类
    2.4.8 Floating类型类
    2.4.9 Integeral类型类
    2.4.10 有关类型类的最后总结
    第3章 函数的语法
    3.1 模式匹配
    3.1.1 元组的模式匹配
    3.1.2 列表与列表推导式的模式匹配
    3.1.3 As模式
    3.2 注意,哨卫!
    3.3 where?!
    3.3.1 where的作用域
    3.3.2 where中的模式匹配
    3.3.3 where块中的函数
    3.4 let
    3.4.1 列表推导式中的let
    3.4.2 GHCi中的let
    3.5 case表达式
    第4章 你好,递归
    4.1 不可思议的最大值
    4.2 更多的几个递归函数
    4.2.1 replicate
    4.2.2 take
    4.2.3 reverse
    4.2.4 repeat
    4.2.5 zip
    4.2.6 elem
    4.3 快点,排序!
    4.3.1 算法思路
    4.3.2 编写代码
    4.4 递归地思考
    第5章 高阶函数
    5.1 柯里函数
    5.1.1 截断
    5.1.2 打印函数
    5.2 再来点儿高阶函数
    5.2.1 实现zipWith
    5.2.2 实现flip
    5.3 函数式程序员工具箱
    5.3.1 map函数
    5.3.2 filter函数
    5.3.3 有关map与filter的更多示例
    5.3.4 映射带有多个参数的函数
    5.4 lambda
    5.5 折叠纸鹤
    5.5.1 通过foldl进行左折叠
    5.5.2 通过foldr进行右折叠
    5.5.3 foldl1函数与foldr1函数
    5.5.4 折叠的几个例子
    5.5.5 另一个角度看折叠
    5.5.6 无限列表的折叠
    5.5.7 扫描
    5.6 有$的函数应用
    5.7 函数组合
    5.7.1 带有多个参数函数的组合
    5.7.2 Point-Free风格
    第6章 模块
    6.1 导入模块
    6.2 使用模块中的函数求解问题
    6.2.1 统计单词数
    6.2.2 干草堆中的缝纫针
    6.2.3 凯撒密码沙拉
    6.2.4 严格左折叠
    6.2.5 寻找酷数
    6.3 映射键与值
    6.3.1 几乎一样好:关联列表
    6.3.2 进入Data.Map
    6.4 构造自己的模块
    6.4.1 几何模块
    6.4.2 模块的层次结构
    第7章 构造我们自己的类型和类型类
    7.1 定义新的数据类型
    7.2 成型
    7.2.1 借助Point数据类型优化Shape数据类型
    7.2.2 将图形导出到模块中
    7.3 记录语法
    7.4 类型参数
    7.4.1 要不要参数化我们的汽车?
    7.4.2 末日向量
    7.5 派生实例
    7.5.1 相同的人
    7.5.2 告诉我怎么读
    7.5.3 法庭内保持秩序!
    7.5.4 一周的一天
    7.6 类型别名
    7.6.1 使我们的电话本更好看些
    7.6.2 参数化类型别名
    7.6.3 向左走,向右走
    7.7 递归数据结构
    7.7.1 优化我们的列表
    7.7.2 种一棵树
    7.8 类型类
    7.8.1 深入Eq类型类
    7.8.2 TrafficLight数据类型
    7.8.3 子类化
    7.8.4 作为类型类实例的带参数类型
    7.9 Yes-No类型类
    7.10 Functor类型类
    7.10.1 Maybe函子
    7.10.2 树也是函子
    7.10.3 Either a函子
    7.11 kind与无名类型
    第8章 输入与输出
    8.1 纯粹与非纯粹的分离
    8.2 Hello, World!
    8.3 组合I/O操作
    8.3.1 在I/O操作中使用let
    8.3.2 反过来
    8.4 几个实用的I/O函数
    8.4.1 putStr
    8.4.2 putChar
    8.4.3 print
    8.4.4 when
    8.4.5 sequence
    8.4.6 mapM
    8.4.7 forever
    8.4.8 forM
    8.5 I/O操作回顾
    第9章 更多的输入输出操作
    9.1 文件和流
    9.1.1 输入重定向
    9.1.2 从输入流获取字符串
    9.1.3 转换输入
    9.2 读写文件
    9.2.1 使用withFile函数
    9.2.2 bracket的时间到了
    9.2.3 抓住句柄
    9.3 TODO列表
    9.3.1 删除条目
    9.3.2 清理
    9.4 命令行参数
    9.5 关于TODO列表的更多有趣的事
    9.5.1 一个多任务列表
    9.5.2 处理错误的输入
    9.6 随机性
    9.6.1 掷硬币
    9.6.2 更多随机函数
    9.6.3 随机性和I/O
    9.7 字节串
    9.7.1 严格的和惰性字节串
    9.7.2 用字节串复制文件
    第10章 函数式地解决问题
    10.1 逆波兰式计算器
    10.1.1 计算RPN表达式
    10.1.2 写一个RPN函数
    10.1.3 添加更多的操作符
    10.2 从希思罗机场到伦敦
    10.2.1 计算最快的路线
    10.2.2 在Haskell中表示道路系统
    10.2.3 实现计算最佳路径的函数
    10.2.4 从输入获取道路系统
    第11章 applicative函子
    11.1 函子再现
    11.1.1 作为函子的I/O操作
    11.1.2 作为函子的函数
    11.2 函子定律
    11.2.1 定律1
    11.2.2 定律2
    11.2.3 违反定律
    11.3 使用applicative函子
    11.3.1 向applicative问好
    11.3.2 Maybe applicative函子
    11.3.3 applicative风格
    11.3.4 列表
    11.3.5 IO也是applicative函子
    11.3.6 函数作为applicative
    11.3.7 zip列表
    11.3.8 applicative定律
    11.4 applicative的实用函数
    第12章 Monoid
    12.1 把现有类型包裹成新类型
    12.1.1 用newtype创建类型类的实例
    12.1.2 关于newtype的惰性
    12.1.3 type、newtype和data三者的对比
    12.2 关于那些monoid
    12.2.1 Monoid类型类
    12.2.2 monoid定律
    12.3 认识一些monoid
    12.3.1 列表是monoid
    12.3.2 Product和Sum
    12.3.3 Any和All
    12.3.4 Ordering monoid
    12.3.5 Maybe monoid
    12.4 monoid的折叠
    第13章 更多monad的例子
    13.1 升级我们的applicative函子
    13.2 体会Maybe
    13.3 Monad类型类
    13.4 一往无前
    13.4.1 代码,代码,代码
    13.4.2 我要飞走
    13.4.3 线上的香蕉
    13.5 do记法
    13.5.1 按我所说的去做
    13.5.2 我皮埃尔又回来了
    13.5.3 模式匹配和计算失败
    13.6 列表monad
    13.6.1 do记法和列表推导式
    13.6.2 MonadPlus和guard函数
    13.6.3 马的探索
    13.7 monad定律
    13.7.1 左单位元
    13.7.2 右单位元
    13.7.3 结合律
    第14章 再多一些monad
    14.1 Writer?我没听说过啊!
    14.1.1 monad赶来营救
    14.1.2 Writer类型
    14.1.3 对Writer使用do记法
    14.1.4 给程序添加日志
    14.1.5 低效的列表构造
    14.1.6 使用差分列表
    14.1.7 比较性能
    14.2 Reader?呃,不开玩笑了
    14.2.1 作为monad的函数
    14.2.2 Reader monad
    14.3 带状态计算的优雅表示
    14.3.1 带状态的计算
    14.3.2 栈和石头
    14.3.3 State monad
    14.3.4 获取和设置状态
    14.3.5 随机性和State monad
    14.4 墙上的Error
    14.5 一些实用的monad式的函数
    14.5.1 liftM和它的朋友们
    14.5.2 join函数
    14.5.3 filterM
    14.5.4 foldM
    14.6 创建一个安全的RPN计算器
    14.7 组合monad式的函数
    14.8 创建monad
    第15章 zipper
    15.1 在树上移动
    15.1.1 面包屑
    15.1.2 向上走
    15.1.3 处理焦点处的树
    15.1.4 一路走到顶端,那里的空气既新鲜又干净
    15.2 在列表上定位
    15.3 一个非常简单的文件系统
    15.3.1 为文件系统创建一个zipper
    15.3.2 操作文件系统
    15.4 小心行事
    15.5 谢谢阅读!
查看详情
其他版本 / 全部 (1)
系列丛书 / 更多
Haskell趣学指南
Go 语言程序设计
[英]Mark Summerfield 著;许式伟、吕桂华、徐立 译
Haskell趣学指南
CoffeeScript程序设计
[美]Mark Bates 著;Goddy Zhao 译
Haskell趣学指南
Clojure程序设计
[美]Stuart、Aaron Bedra 著;温瑞云 译
Haskell趣学指南
Erlang趣学指南
[加拿大]弗莱德·赫伯特(Fred Hébert) 著;邓辉、孙鸣 译
Haskell趣学指南
Dart语言程序设计
[美]Chris Strom 著;韩国恺 译
相关图书 / 更多
Haskell趣学指南
HappyBirthday,Moon
Frank Asch 著
Haskell趣学指南
Hadoop大数据分布式计算框架--原理与应用
杨成伟;祝翠玲;刘位龙
Haskell趣学指南
Hadoop大数据平台构建与应用(第2版)
米洪 陈永
Haskell趣学指南
Half a Man
Morpurgo;Michael;O\'Callaghan;Gemma
Haskell趣学指南
Hadoop大数据技术与项目实战
王小洁
Haskell趣学指南
HarmonyOS应用程序开发与实战(Java版)
姚信威
Haskell趣学指南
Handbook of ICU Therapy
Fuller;John;Granton;Jeff;McConachie;Ian
Haskell趣学指南
Hadoop简明教程
刘科峰
Haskell趣学指南
Harper儿童皮肤病学(上下卷),第4版(翻译版)
马琳;王华;姚志荣;徐子刚
Haskell趣学指南
Harry Potter: Hogwarts: A Movie Scrapbook
Revenson;Jody
Haskell趣学指南
HarveyQuaytman
Dore Ashton
Haskell趣学指南
Hadoop生态系统及开发
深圳市讯方技术股份有限公司
您可能感兴趣 / 更多
Haskell趣学指南
后现代主义与当代艺术状况
[斯洛文尼亚]阿莱西·艾尔雅维茨 著;张云鹏 编;高建平、王春辰 译
Haskell趣学指南
为什么狗狗这么忠诚?/魔法象·图画书王国
[斯洛文尼亚]莉娜·布拉普 著;鲍捷 译
Haskell趣学指南
梦的译者
[斯洛文尼亚]安德烈·梅德维德 著;梁俪真 译
Haskell趣学指南
莫莫和莉莉(东方娃娃世界精选绘本)
[斯洛伐克]卡特琳娜.玛库洛娃 著;卡特琳娜.玛库洛娃、李丹蕾 译
Haskell趣学指南
我的朋友
[斯洛文尼亚]海伦娜.卡拉杰克 著;夏鸥 译;[斯洛文尼亚]波隆娜.罗维森 绘
Haskell趣学指南
《我的弟弟》
[斯洛文尼亚]海伦娜·卡拉杰克 著;夏鸥 译;[斯洛文尼亚]波隆娜·罗维森 绘
Haskell趣学指南
嗷!真烦!
[斯洛文尼亚]玛尼卡·K.穆西尔 著;幼时文化 译;[斯洛文尼亚]玛尼卡·K.穆西尔 绘
Haskell趣学指南
无身体的器官//当代激进思想家译丛
[斯洛文尼亚]斯拉沃热·齐泽克 著;吴静 译
Haskell趣学指南
农场动物/百变动物翻翻书
[斯洛伐]安东·波蒂埃 著;九童国际文化事业有限公司 译;[斯洛伐]索菲亚·陶列陶 绘
Haskell趣学指南
百变动物翻翻书:海洋动物
[斯洛伐]安东·波蒂埃 著;九童国际文化事业有限公司 译;[斯洛伐]索菲亚·陶列陶 绘
Haskell趣学指南
不一样的菲力克斯先生(东方娃娃世界精选绘本)
[斯洛文]皮特·斯文蒂纳 著;[斯洛文]皮特·斯文蒂纳、乔韵洁 译;[斯洛文]安娜·瑞兹波特尼基·多纳蒂 绘
Haskell趣学指南
哪个球才合适
[斯洛伐克]卡特琳娜·玛库洛娃 著