免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7949 | 回复: 10
打印 上一主题 下一主题

"Haskell函数式编程语言导引"目录(Version 0.2) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-27 17:01 |只看该作者 |倒序浏览
大家好,“Haskell函数式编程语言导引”这本书准备开工

之前我和邮电出版社的一位编辑讨论过,昨天他告诉我,他下决心出这本书了,已经将选题上报,相信很快会有结果。所以,在此我想联系一下愿意 “动手干活” 的人(呵呵,我自己肯定会干活的)。
麻烦愿意参加写作的朋友给我发封邮件吧:liangkun1983(at)hotmail.com ,我自荐负责组织工作,大家只要专心在技术上就好。
至于作者需要满足的条件,目前我认为做到以下几点就好:
1、喜欢Haskell这个语言,并且对写这本书感兴趣;
2、至少仔细、完整地阅读过两本或两本以上不同的Haskell教程,并独立完成其中的练习;
3、至少读过一个真实的Haskell程序的某个子系统的代码;
4、对Haskell的实现有所了解,对基本理论有所了解。

还有一个附带的条件,那就是要坚持到完成。其实,对于“时间”而言,也许并不需要你每天都能拿出大段的时间用于这个工作。如果工作日每天能够拿出2个小时,周末每天拿出4个小时来专心写这本书,一周也有18个小时的工作时间。所以,这个工作贵在坚持(如果满足上面的条件“1”的话,应该很好做到的)。大家对作者有什么建议?请说一下吧

最后是我根据上次大家提的意见修改过的目录,麻烦大家再看看,提些意见(提意见的时候,希望能够说明理由,类似“我觉得XX样,感觉好一些”的理由也接受)。


================================================================================
Haskell函数式编程语言导引 (Version 0.2)

第一章 介绍
    1.1 Haskell简介
            本节主要介绍Haskell语言的历史、发展及特点。同时也介绍一些其它常见的函
        数式语言的发展情况(Lisp,Scheme,ML,Erlang,OCaml)。
    1.2 编译环境
            本节指导读者在自己的计算机上安装GHC编译器作为本书中所有例子使用的编译
        开发环境,并对GHC做简要介绍(GHC是目前Haskell的工业级编译器)。
    1.3 第一个Haskell程序
            该部分使用快速排序作为例子,完成一个完整结构的Haskell程序。介绍
        Haskell程序的主体结构和一些基本概念(值、函数、注释、模块等)。
    1.4 函数式程序设计
            通过简单例子讨论为什么使用函数式程序设计、函数式程序设计的特点、解决
        问题的常用思路。

第二章 值和表达式
        本章主要介绍Haskell语言内置的基本类型的值和内置的一些基本运算符。
    2.1 名字
            这一节独立出来强调在Haskell中没有“变量”这个东西,所有的标志符都只
        是名字。所有的量都是常量。
    2.2 数值类型
            各种数值类型的讲解,包括他们的取值范围、可以执行的操作,性质等。
    2.3 字符及字符串类型
            这里应该包括转义序列的讲解。
    2.4 条件表达式
            if-then-else表达式和case-of表达式。
    2.5 运算符
            引入前面介绍的表达式中运算符和优先级、结合性的概念,指出运算符和函数
        的同一性。
            
第三章 函数
        本章主要介绍函数的概念、类型、使用和定义,强调Haskell中函数的引用透明性。
    3.1 Haskell中的函数
            本节介绍Haskell中函数的概念以及它与其它命令式语言中的不同。
    3.2 使用函数
            本节通过调用几个预定义的库函数来讲解怎么使用函数,函数应用运算符,
        函数结合运算符,函数的函数等。
    3.3 函数的类型
            给出函数的类型的概念。这里同时给出Haskell的类型推导的介绍。
    3.4 函数的定义
            本节介绍定义函数的方法,包括分情况定义、参数的Pattern Match、Guard。
    3.5 局部名字及作用域规则
            本节介绍通过let和where引入局部名字,并讨论Haskell的词法作用域规则和
        使用缩进(代码排布)标定作用域的原则。
    3.6 递归的概念
            递归是函数式程序设计的核心想法,这一节至少包含以下几个小结:
        3.5.1 使用数学中的函数例子引入递归的概念
        3.5.2 非数学函数的递归的例子
        3.5.3 递归和循环的关系
    3.7 惰性求值
            这一节讲解Haskell的惰性求值的性质。

第四章 列表和元组
        本章介绍Haskell中预定义的列表和元组。
    4.1 列表的概念
            本节介绍列表的概念、性质。
    4.2 列表的类型和使用
            本节讲解列表的类型和用途,说明String类型就是[Char]类型。
    4.3 列表的构造
            本节介绍几种列表构造的方法。
    4.5 列表与函数
            列表是函数式程序设计中的数据结构以及常用的控制结构。重点讨论列表上
        的各种操作和函数,这里是函数式程序设计另一个核心的地方。
    4.6 元组的概念
            本节介绍元组的概念、性质,与列表的不同。
    4.7 元组的定义和使用
            定义和使用元组的方法。
    4.8 元组的类型
            注意强调元组类型,这里很容易从列表类型来“递推”,强调两种类型的不同
        点。

第五章 代数数据类型
        本章系统讲解Haskell的类型系统。
    5.1 声明自定义类型
            本节包含以下几节:
        5.6.1 data声明
            data声明的自定义类型是Haskell中最重要的种类型定义方式。本节讲解如何
        定义类型。通过和C语言中的struct、union、enum对比来说明如何使用这个定义。
        5.6.2 递归数据类型和无穷数据结构
            通过树这种数据结构来介绍递归数据类型和无穷数据结构。
        5.6.3 newtype声明
            强调该类型只在编译时可见。
        5.6.5 type声明类型别名
            本节讲解type声明的用法,强调新类型与原类型完全相同,可以互换。
    5.2 再看Pattern Match
            本节系统讲解Haskell中所能使用的Pattern Match以及可以使用的环境。
    5.3 多态类型的概念
            这一节使用数字类型和函数类型来引入多态类型的概念。
    5.4 参数化类型与类型构造器
            本节讲解参数化类型以及类型构造器的概念(* -> *)。
    5.5 类型类
            这一节讲解类型类的概念,使用。
    5.6 类型类的定义
            本节讲解自定义的类型类以及将一个类型加入一个已有的类型类。
    5.7 常用的类型类
            本节讲解系统预定义的几个常用的类型类。
    5.8 再看函数类型
            本节讲解多元函数类型的部分应用、高阶函数、类型参数。
   
第六章 Monad
        本章介绍Monad概念。这个概念理解起来稍有些难度。
    6.1 什么是Monad
            本节不介绍Haskell标准的Monad,而是通过例子引入对Monad的需求,进而自
        己定义一个类似Monad的类型类。
    6.2 Monad的概念
            本节讲解Haskell中定义的Monad类型类以及Monad定律。
    6.3 Monad的使用
            本节讲解应用系统预定义的Monad。主要强调这几种常用Monad的用法和应用
        环境。同时讲解如何理解Monad,涉及Monad是容器和Monad是计算两个方面。
    6.4 定义Monad
            本节讲解如何定义程序员自定义的Monad。
    6.5 do块的本质
            本节讲解do语法糖的本质,并给出机械的翻译规则。
    6.6 更多Monad的例子
            讲解另外一些预定义的一些常用的Monad。(注释:本节和6.3节的区别在于
        6.3节只是通过几个Monad来说明Monad操作的用法和应用Monad的环境,而本节则
        介绍常用的Monad)
    6.7 MonadPlus
            本节讲解MonadPlus的概念和应用。

第七章 输入输出
        本章讲解Haskell的输入输出系统。
    7.1 输入输出引发的问题
            提出“副作用”问题。
    7.2 IO Monad
            将IO作为一种特殊的State Monad来讲解,说明IO动作的本质。
    7.3 标准输入输出和命令行参数
            讲解标准输入输出的用法。
    7.4 文件输入输出
            讲解文件的输入与输出。
    7.5 Lazy特点的陷阱
            在输入输出问题上,由于Haskell的Lazy属性导致的问题。
    7.6 “纯”代码和“不纯”代码
            函数式程序设计的原则之一,将纯的代码和不纯的分开。

第八章 异常处理
        本章介绍Haskell中的异常处理机制。
    8.1 异常与异常处理
            介绍异常的概念,强调可以用Maybe等纯代码处理的异常,不要使用Exception
        处理。
    8.2 惰性与异常处理
            讨论由于Haskell的惰性,导致的异常处理的一些问题。
    8.3 预定义异常
            通过预定义异常来讲解异常处理的用法。包括异常的抛出、捕获等。
    8.4 自定义异常
            讲解如何定义和使用程序员自定义异常。
    8.5 IO异常
            更仔细讲解IO异常。

第九章 并行与并发编程
        本章讲解如何使用Haskell写并行和并发的程序。
    9.1 并行编程
            介绍并行的概念,以及如何让GHC利用多核机器。
    9.2 规则形式
            讲解规则形式和头规则形式。
    9.3 顺序与并行构造
            讲解Haskell中的顺序和并行构造方法。使用这些方法可以控制代码的顺序或
        并行执行。
    9.4 算法和计算策略的分离
            讲解如何将算法和计算该算法的并行策略分离,这是一个原则。
    9.5 并发编程
            讲解线程的概念,介绍并行和并发的区别。
    9.6 线程的创建和终结
            本节介绍创建和终止一个新的线程来完成部分任务。
    9.7 线程同步
            讲解同步变量和同步通道的应用。
    9.8 STM介绍
            介绍STM的概念和并发模型。讨论STM相对于前两中并发构造的特点。
    9.9 开始和结束一个事务
            本节讲解如何使用Haskell中的STM构造来开始和提交一个事务。
    9.10 retry和alternative
            本节讲解事务逻辑中的重试和选择构造。

第十章 Haskell程序的组织
        讲解一个比较大型的程序源文件和各种定义的组织,以及如何写编译脚本。
    10.1 模块的概念
    10.2 模块的定义
    10.3 Cabal
    10.4 编译脚本的书写

第十一章 高级主题
        这一章简单介绍一些前面没有涉及,但是比较重要的高级主题。事实上,这些主
    题对于一个真正的工程程序是非常有用的。
    11.1 FFI介绍
            介绍外部语言函数接口。这个可以让Haskell程序调用其他语言写的函数,以
        及让其他语言调用Haskell的函数。
    11.2 Monad转换器
            介绍Monad转换器。
    11.3 Functor介绍
            介绍Functor的概念。
    11.4 Applicative介绍
            介绍Applicative的概念,总结Functor、Applicative、Monad之间的关系。
    11.3 Arrows介绍
            介绍Arrow的概念。              
    11.4 Haskell的程序复杂度与性能
            介绍Haskell实现使用的一些算法,并基于这个来讨论Haskell程序的性能。
        另外,介绍严格限定符(用于指示某个数据进行严格求值)。并简单介绍如何
        调优程序性能。
    11.5 Haskell程序的测试
            介绍GHC内置的程序测试库,以及通用的函数式程序测试方法。
    11.6 Haskell的一些理论基础介绍
            类型理论,范畴论等。
    11.7 更多的资料
            如何找到更多的资料。

================================================================================

[ 本帖最后由 freearth 于 2009-3-28 11:10 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-03-27 17:12 |只看该作者
另外,我想参与写作的人最好是三个人。原因有三个:1、作者太多的话“无果而终”的可能性会增大;2、作者太多的话全书的思路可能会不连贯;3、作者太少的话每个人的任务可能比较重。

但是,欢迎所有有意愿的朋友踊跃参与。即便最后只有三个人执笔,但是其它的工作也是很重要的。比如各章的审阅、实例的验证等等,这些都需要有主要负责人。希望大家能够合作完成这本书。


原帖由 freearth 于 2009-3-27 17:01 发表
大家好,“Haskell函数式编程语言导引”这本书准备开工

之前我和邮电出版社的一位编辑讨论过,昨天他告诉我,他下决心出这本书了,已经将选题上报,相信很快会有结果。所以,在此我想联系一下愿意 “动手干 ...

论坛徽章:
0
3 [报告]
发表于 2009-03-27 17:31 |只看该作者
前天刚装上winhugs完全的初学。
要是有测试实例代码之类的活。 可以找我。
如果我有幸能加入到这么一项活动中的话我会很高兴的

论坛徽章:
0
4 [报告]
发表于 2009-03-27 17:34 |只看该作者
第一章再增加一些吧:

函数式编程的优缺点
haskell 在函数式编程的位置
和其他 函数式语言 的类比
介绍一下其他编译器(hugs,...)吧(虽然本书程序只限于 ghc 编译器)

新手也只能建议这些了

[ 本帖最后由 izhier 于 2009-3-27 17:48 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-03-27 17:38 |只看该作者
新手,如果可以的话乐意做一、二章的审阅、实例的验证
(我目前使用的是 hugsMar2005)

论坛徽章:
0
6 [报告]
发表于 2009-03-28 00:39 |只看该作者
从目录来看,不只是“导引”这么简单啊。对第十一章比较期待,不知道本版哪些人有实力介绍这一章呢?

[ 本帖最后由 roy_hu 于 2009-3-28 10:22 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2009-03-28 11:08 |只看该作者
嗯,的确。这些应该适当介绍一下。多谢


原帖由 izhier 于 2009-3-27 17:34 发表
第一章再增加一些吧:

函数式编程的优缺点
haskell 在函数式编程的位置
和其他 函数式语言 的类比
介绍一下其他编译器(hugs,...)吧(虽然本书程序只限于 ghc 编译器)

新手也只能建议这些了

论坛徽章:
0
8 [报告]
发表于 2009-03-28 11:10 |只看该作者
第十一章“真的”是导引....
原帖由 roy_hu 于 2009-3-28 00:39 发表
从目录来看,不只是“导引”这么简单啊。对第十一章比较期待,不知道本版哪些人有实力介绍这一章呢?

[ 本帖最后由 freearth 于 2009-3-28 11:17 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-03-28 15:40 |只看该作者
支持楼主。

如上次说讲,我愿意阅读和测试代码。

论坛徽章:
0
10 [报告]
发表于 2009-03-29 23:22 |只看该作者
支持楼主,哈哈。早日成书。另外你的要求挺高的,真不好找
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP