Get Programming with Haskell-23
在阅读完第 23 课后,你将能够: • 使用 Text 类型进行更高效的文本处理。 • 使用语言扩展改变 Haskell 的行为。 • 使用常见的文本函数进行编程。 • 使用 Text 类型正确处理 Unicode 文本。
个人博客
关于软件、系统设计与持续学习。文章由 Notion 写作并在这里发布。
目前已发布 302 篇文章。
筛选结果
共 38 篇
在阅读完第 23 课后,你将能够: • 使用 Text 类型进行更高效的文本处理。 • 使用语言扩展改变 Haskell 的行为。 • 使用常见的文本函数进行编程。 • 使用 Text 类型正确处理 Unicode 文本。
在阅读完第 22 课后,你将能够: • 访问命令行参数。 • 使用传统的 I/O 交互方式。 • 使用惰性求值编写 I/O 代码,使 I/O 更容易。
在阅读完第 21 课后,你将能够: • 理解 Haskell 如何通过使用 IO 类型处理 I/O。 • 使用 do 记法执行 I/O 操作。 • 编写能够与现实世界交互的纯粹程序。
在本章总结篇中,你将使用你在 Haskell 中构建的工具来建模时间序列数据
正如类型类通常比面向对象编程中的接口更抽象一样,参数化类型在大多数语言中扮演着比泛型更大的角色。本课介绍了一个重要的参数化类型:Maybe。与表示值容器的 List 或 Map 不同,Maybe 是你将看到的许多表示值上下文的类型中的第一个。Maybe 类型表示可能缺失的值。在大多数语言中,缺失的值用 null 值表示。通过使用表示可能缺失的值的上下文,Maybe 类型允许你编写更安全的代码。由于 Maybe 类型的强大功能,与空值相关的错误会从 Haskell 程序中系统地移除。
到目前为止,我们已经讨论了类型如何像数据一样被加和乘。 像函数一样,类型也可以接受参数。类型通过在其定义中使用类型变量来接受参数(因此它们的参数总是其他类型)。使用参数定义的类型称为参数化类型。参数化类型在 Haskell 中扮演着重要的角色,因为它们允许你定义可以与各种现有数据一起使用的通用数据结构。
组合两个事物意味着什么?这里有一些例子:你可以连接两个列表得到一个新的列表,你可以合并两个文档得到一个新的文档,你可以混合两种颜色得到一种新的颜色。在许多编程语言中,每种组合类型的方法都有其自己独特的操作符或函数。与几乎每种编程语言都提供将类型转换为字符串的标准方法非常相似,Haskell 提供了一种将相同类型的实例组合在一起的标准方法。
你将更仔细地研究一些我们已经介绍过的类型。你这样做是为了更多地了解 Haskell 类型的独特之处以及如何使用类型设计程序。到目前为止,你所看到的大多数类型都是代数数据类型。代数数据类型是通过组合其他类型而形成的任何类型。理解代数数据类型的关键在于准确地知道如何组合其他类型。幸运的是,只有两种方法。你可以使用“与”组合多种类型(例如,一个名字是一个 String 与另一个 String),或者你可以使用“或”组合类型(例如,一个 Bool 是一个 True 数据构造器 或一个 False 数据构造器)。通过使用“与”组合其他类型而形成的类型称为积类型(product types)。使用“或”组合而形成的类型称为和类型(sum types)。
主题索引