haskell - 定义 Hask 的目的是什么?
问题描述
偶尔我会看到对Hask的引用。
这被描述为:
Hask 是 Haskell 类型和函数的范畴。
尝试定义这是一件足够公平的事情。如果一个人喜欢尝试并找到描述事物的方法。但一般来说,这样做时,人们希望获得对事物本质的特殊见解,或者从中产生一些东西。
- 定义 Hask 的目的是什么?
- 有没有从中获得见解的好例子?
- 它只是作为一种方式来谈论某些原本难以简明定义的事情吗?
解决方案
这样做的原因与其说是谈论Hask本身。
我们经常谈论的许多事情——函子、单子、自然变换……——不是特定于编程的,更不用说是特定于 Haskell 的,而是来自数学——来自范畴论。现在,在数学中,如果你说“<em>F 是函子”,人们首先会问“函子在哪些类别之间?” 在实践中,数学家可能会考虑从拓扑空间范畴到阿贝尔群范畴的函子。这样的函子与我们在 Haskell 中使用的函子完全不同。然而,它具有“<a href="https://en.wikipedia.org/wiki/Abstract_nonsense" rel="noreferrer">抽象废话”范畴理论的非常普遍的性质。
为了将数学严格地应用于我们想要在 Haskell 中做的事情,我们需要明确,这就是Hask一词的来源:
Haskell 函子是从Hask类别到其自身的函子。
你当然可以在这里“内联” Hask的定义
Haskell 函子是从 Haskell 类型(以 Haskell 函数作为态射)类别到自身的函子。
但这很快就会变得很麻烦。
推荐阅读
- amazon-web-services - 使用 boto3 创建 aws lambda 集成 api 网关资源
- python - 为什么 multiprocessing.Process() 和 concurrent.futures.ProcessPoolExecutor() 使用 logging.handlers.QueueHandler() 给出不同的日志输出?
- android - 在 android 应用程序上添加一个点击呼叫图标(主应用程序旁边的另一个额外图标)。怎么做?
- javascript - 使用 nodejs 从 twitter API 检索超过 100 条推文
- nginx - 在没有 ssl 的生产服务器上带有乘客和 nginx 的操作电缆
- c# - 如何编写列表
在 C# 中以科学计数法转换为 Json? - postgresql - 如何在 PostgreSql 上使用 Jooq 级联截断?
- node.js - 登录成功但没有重定向到reactjs中的另一个页面(react-router-dom,axios)
- ibm-data-replication - IBM Data Replication - 如何从另一个表中检索和复制列?
- jquery - jQuery追加和删除动态表行,什么也没发生