定义Hask的目的是什么?

时间:2019-12-22 23:29:12

标签: haskell

有时我会看到对Hask的引用。

其中描述为:

  

Hask是Haskell类型和函数的类别。

这是足够公平的尝试尝试。如果喜欢尝试找到描述事物的方法。 但是通常这样做的时候,人们希望从事物的本质中获得特定的见识,或者以其他方式从事物中产生一些东西。

  • 定义Hask的目的是什么?
  • 是否有从中获得见解的好例子?
  • 这是否只是一种谈论某些事情的方式,而这些事情本来很难简明地定义?

1 个答案:

答案 0 :(得分:10)

这样做的原因并不是要谈论 Hask 本身。

我们谈论的许多事情很多,例如函子,单子函数,自然变换... –不是特定于编程的,更不用说Haskell特定的了,而是来自数学的–来自范畴论。现在,在数学中,如果您说“ F 是函子”,人们会首先问“在哪个类别之间的函子?”。在实践中,数学家可能会consider functors from the category of topological spaces to the category of abelian groups。这样的仿函数与我们在Haskell中使用的仿函数完全不同。但是它具有“ abstract nonsense”类别理论的非常普遍的性质。

要将数学严格地应用到我们在Haskell中想要做的事情,我们需要明确,这就是 Hask 出现的地方:

  

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

您当然可以在此处“内联” Has 的定义

  

Haskell函子是从自身的Haskell类型(具有Haskell函数作为态射)的函子。

但这会很快变得麻烦。