跳转到内容

Haskell/主题列表

来自维基教科书,开放世界中的开放书籍

以下是非详尽的主题列表,涵盖了本书模块(截至目前,涵盖前三章)。目前它主要作为一种工具,使贡献者更容易将整本书的结构可视化,但希望它最终能演变成一份完整的学习指南。

Haskell 基础
旧结构
  • 设置
    • 安装和启动
  • 变量和函数
    • 变量和函数简介(首次接触类型)
    • 变量的不可变性
  • 列表和元组
    • 列表简介
    • 使用 (:) 构建列表
    • 元组简介(带模式匹配的第一个示例)
  • 下一步
    • 源文件
    • 控制结构简介(if / case,带 PM 的预告)
    • 分段函数定义
    • 函数组合
    • let 绑定
  • 类型基础
    • 简介 / 动机
    • 简单示例(带数字类的预告)
    • 函数类型
    • 多态类型简介
    • 类型签名
    • 类型推断
  • 简单输入和输出
    • 简介 / 动机
    • 操作
    • 操作和类型
    • IO 跟踪指针
新结构
  • 设置
    • 安装和启动
    • GHCi 作为计算器
  • 定义函数
    • 源文件
    • 定义简介(函数、变量),首次接触类型
    • 仅使用 Int 的示例
    • where 子句,布局
    • 变量的不可变性
  • 真值(用于定义更有趣的函数)
    • 布尔值示例 1 == 2
    • 保护
    • 更多示例
  • 类型基础
    • 简介 / 动机 False < 2
    • 类型签名,类型推断
    • Int、Bool、函数类型
    • 多态类型简介,提及用于重载的数值类,Double 用于浮点数
  • 元组和列表
    • 元组简介(模式匹配) - 有助于返回多个结果
    • 列表是头部 + 尾部,(:) 和 []
    • 模式匹配:(:) 和 [] 也可以用在左侧
  • 构建词汇表
    • 所有语法片段都已就位,解释说读者现在必须学习许多类型和函数
    • 示例程序,练习!
    • 备忘单:Prelude 类型、Prelude 函数,按类别排序。每个类别都附带简短的解释 / 概念 / 函数概述;链接到后续章节以获取更详细的解释。 不确定如何组织这个
      • 函数
      • 列表
      • 字符串
      • 输入 / 输出
  • 使用列表
    • 列表推导
  • 简单输入和输出
    • 简介 / 动机
    • 操作
    • 操作和类型
    • IO 跟踪指针


Haskell 初级
旧结构
  • 递归
    • 递归简介
    • 基于列表的递归(第一个 PM 在列表上的示例)
  • 更多关于列表
    • 构建和修改列表(螺旋式回顾,需要简化,预告柯里化)
    • 点点符号
    • 无限列表(首次提及惰性)
    • head / tail
    • map(首次提及无点风格;介绍部分函数,但不进行注释)
  • 列表处理
    • 折叠(第一个数据结构分析,更多关于惰性的讨论)
    • 扫描
    • 过滤
    • 列表推导(也许 PM 示例需要美化)
  • 类型声明
    • 简介 / 动机
    • data / 构造函数
    • 代数数据类型解构(大量隐式 PM 使用)
    • type
  • 模式匹配
    • 详细解释 PM
    • 构造函数和 PM
    • 记录简介
    • 作为模式
    • 使用字面量的 PM
    • PM 示例
  • 控制结构
    • if 的弱螺旋式回顾(几乎多余)
    • case 的螺旋式回顾(考虑 PM,与分段比较)
    • 保护
  • 更多关于函数
    • let / where(被视为私有函数定义)
    • lambda 表达式
    • 中缀与前缀(首次明确提及语法变体)
  • 高阶函数
    • 快速排序示例
    • 类型签名的结合律(带一个非常难的练习)
    • 柯里化
新结构
  • 递归
    • 这可能适合放在基础部分,列表两个模块之间,也许?
    • 递归简介
    • 基于列表的递归
  • 更多关于函数
    • 将它和控制结构放在章节末尾似乎很不自然。
    • let / where(被视为私有函数定义)
    • lambda 表达式(请注意,所有模式匹配示例都应该理想地返回模式匹配)
    • 中缀与前缀(首次明确提及语法变体)
  • 更多关于列表
    • 初级中的现有列表模块之一可能会被合并。
    • 点点符号
    • 无限列表
    • map / filter( 或者放在基础中,与推导一起?
    • 折叠 / 扫描(第一个数据结构分析,更多关于惰性的讨论)
  • 类型声明
    • 简介 / 动机
    • data / 构造函数
    • 代数数据类型解构
    • type
  • 模式匹配
    • 详细解释 PM
    • 构造函数和 PM
    • 记录简介
    • 作为模式
    • 使用字面量的 PM
    • PM 示例
  • 控制结构
    • 有了新的基础,本章更有意义了
    • if / then / else 及与保护的比较
    • case 及与分段的比较
  • 缩进
    • 适合附近关于语法的模块。
    • 事实上,我甚至可以看到它如何被合并到一个简化的控制结构版本中
    • 布局
    • 转换为 C 风格
  • 有效使用 GHCi
Haskell 中级
旧结构
  • 模块
    • 简介 / 动机
    • 导入
    • 导出
  • 缩进
    • 布局
    • 转换为 C 风格
  • 更多关于数据类型
    • 枚举(不使用派生上下文 - 第一次使用派生)
    • 记录
    • 参数化类型(应重点关注在构造函数中的使用)
    • (newtype 缺失)
    • 树(及其 map 和 fold)
    • 用于任意数据类型的 map 和 fold
  • 类声明
    • 派生
    • 继承
    • Prelude 类(仅图示)
    • (极其缺乏对数字类的讨论)
  • 类和类型
    • 类型约束(在签名、构造函数和实例上。提及 newtype)
    • (类似于存根的模块)
  • 跟踪状态
    • (空,应该删除?)
新结构
  • 模块
    • 简介 / 动机
    • 导入
    • 导出
  • 构建独立应用程序
    • 目前在 Haskell 实践/通用实践中。这绝对应该在初学者路线中。
  • 高阶函数
    • 将这个模块放在初级末尾让人感觉有点受限制
    • 快速排序示例
    • 类型签名的结合律(带一个非常难的练习)
    • 柯里化
  • 更多关于数据类型
    • 枚举(不使用派生上下文 - 第一次使用派生)
    • 记录
    • 参数化类型(应重点关注在构造函数中的使用)
    • (newtype 缺失)
  • 其他数据结构
    • 树(及其 map 和 fold)
    • 用于任意数据类型的 map 和 fold( 临时位置
    • 当前关于类的模块之间的划分似乎是任意的,因此本提案将它们合并。
    • 类声明
    • 继承
    • 类型约束(在签名、构造函数和实例上。提及 newtype)
    • 派生(请注意主题顺序的改变)
  • 标准类
    • 该想法是将当前在类声明中的图示扩展到一个完整的模块。
    • 这可能是探索 Prelude 类型比 Haskell 基础备忘单更自然的位置
    • 此外,如果将派生也移到这里,可能更适合(尽管这可能会使模块过长)

注意:应该删除跟踪状态,在没有对单子进行适当讨论的情况下,尝试创建这样的模块可能没有充分的理由。

华夏公益教科书