首页 > 解决方案 > 定义 Hask 的目的是什么?

问题描述

偶尔我会看到对Hask的引用。

这被描述为:

Hask 是 Haskell 类型和函数的范畴。

尝试定义这是一件足够公平的事情。如果一个人喜欢尝试并找到描述事物的方法。但一般来说,这样做时,人们希望获得对事物本质的特殊见解,或者从中产生一些东西。

标签: haskell

解决方案


这样做的原因与其说是谈论Hask本身。

我们经常谈论的许多事情——函子、单子、自然变换……——不是特定于编程的,更不用说是特定于 Haskell 的,而是来自数学——来自范畴论。现在,在数学中,如果你说“<em>F 是函子”,人们首先会问“函子在哪些类别之间?” 在实践中,数学家可能会考虑从拓扑空间范畴到阿贝尔群范畴的函子。这样的函子与我们在 Haskell 中使用的函子完全不同。然而,它具有“<a href="https://en.wikipedia.org/wiki/Abstract_nonsense" rel="noreferrer">抽象废话”范畴理论的非常普遍的性质。

为了将数学严格地应用于我们想要在 Haskell 中做的事情,我们需要明确,这就是Hask一词的来源:

Haskell 函子是从Hask类别到其自身的函子。

你当然可以在这里“内联” Hask的定义

Haskell 函子是从 Haskell 类型(以 Haskell 函数作为态射)类别到自身的函子。

但这很快就会变得很麻烦。


推荐阅读