programming-languages - 为什么语言类型的范畴有态射,而不是函子?
问题描述
我可能没有很好地表达这个问题,所以请耐心等待我试图解释我的意思。
我正在学习应用于编程的类别理论。到目前为止,我的理解是:
- 一个类别中的对象是“完整的”;你不应该窥视它们的内部结构。
- 任何集合都是一个类别
- 编程语言类型可以被认为是集合。(Bool 是集合 True、False;Int 是所有整数的集合;等等)
- 因此,一种语言中的所有类型都形成了一个集合类别。
- 态射是对象之间的箭头。
- 如果这些对象本身就是类别,那么态射被称为函子。
总之,这意味着从 Int 到 Bool 的函数是函子,因为它是从集合类别 Int 到集合类别 Bool 的映射。
但是,我也在其他地方读过(特别是https://www.johndcook.com/blog/2014/05/10/haskell-category-theory/),这样想是错误的,我们真的不应该谈论语言类型是具有“公正”态射的基本类别。但我不明白这与我以前的逻辑有何关系。
因此,我必须得出结论,我之前的逻辑是错误的,但我不清楚如何或为什么。什么是概念化这个的正确方法?集合只是额外的特殊例外吗?或者这真的只是一个关于如何查看问题空间的任意偏好问题?还是我只是在某个地方完全错了?
解决方案
推荐阅读
- wordpress - 使 WP 插件“Contact Form 7”文本字段光标闪烁
- vue.js - 未找到依赖项 - Vue Js
- tensorflow - 如何在 tensorflow.js 上以 tensor4d 捕获视频?
- python - 如何搜索所有目录并解压 .gz 文件?
- c++ - 在 Mac OS Catalina 中编译 hadoop 原生库。错误:未知类型名称“constexpr”。别名声明是 C++11 扩展
- swift - Swift - WhatsApp 就像键盘关闭
- amazon-web-services - 以编程方式启用新的 AWS 区域
- generics - 为什么在打印通用树时出现分段错误?
- maven - 向模块中的 Maven 配置文件注入新的参数/属性值
- javascript - 通过 jQuery 中的索引查找 HTML 的各个元素并为其设置样式