![]() |
1
16
有两个级别:类型和值。由于Hask的对象是类型,因此只能使用类型构造函数映射它们
然后对于函子,你需要一个态射映射(即函数,是值):
重要的是
(附带说明:这两个自然变换实际上是单位和乘法,这使monad成为 内函子范畴中的幺半群 ) 实际定义不同,但相当。看见 Haskell/wiki 在这方面。
如果采用从标准绑定派生的类复合运算符
你可以看到,这实际上是关于 Kleisli category 。另请参见 article on nLab 关于计算机科学中的单子。 |
![]() |
2
8
类别的对象包括
不
与OO编程语言中的对象相同(我们更喜欢调用
价值观
在Haskell;讨论了它们在范畴理论中的含义
here
). 相反
哈斯克
是
类型
.哈斯克尔
OTOH
箭头
属于
哈斯克
实际上是一些函数类型的值
|
![]() |
3
6
尽管您在问题中使用了那些花哨的分类术语,并且应该对现有的答案完全满意,但这里尝试了一个非常简单的解释:
假设那里
将
是一种功能
现在尝试定义一些常见的Functor实例:
够简单了,嗯? 以下是普通的Functor实例:
那么...怎么样
列表:
好吧也许呢?
可以现在Tuples:
您知道,应该将哪个值填充到该元组的左侧组件中是未知的。实例声明表示它有一个类型
所以你看,如果你有
如果您查看文档
|
![]() |
4
4
如果你有
然后类型构造函数
|
![]() |
5
0
在范畴论中,函子将所有对象从一个范畴映射到另一个范畴,但函子不映射 对象中的元素 . |
![]() |
Kristóf Marussy · 棱柱体或仿射遍历的对偶是什么? 7 年前 |
![]() |
softshipper · 分解器的简单定义 7 年前 |
![]() |
hgiesel · Haskell的Edward Kmetts包概述 7 年前 |
![]() |
softshipper · 我违反抽象法则了吗? 7 年前 |
![]() |
Dan OneaÈÄ · 玫瑰树的初始代数 7 年前 |