向量空间加矩阵作为类别

时间:2018-09-05 19:52:54

标签: haskell

我尝试用向量空间了解Haskell中的类别。 我画一幅画,谁能替我复习一下。 我不确定这是正确的类别图片。

enter image description here

1 个答案:

答案 0 :(得分:4)

您的图片中可能不太准确的一件事:重要的是,对象是向量空间(而不是向量!),而态射是矩阵(我更喜欢说 linear映射。无论如何,它们都是单个实体,而不是“矩阵空间”。虽然矩阵本身就是向量空间的元素,但矩阵不是向量空间,而仅仅是单个向量。因此,应更改“对象”气泡,使其不包含矩阵,而包含矩阵集。并且,进一步详细说明:3×3矩阵的空间之间的线性映射实际上是9×9矩阵,而不是另一个3×3矩阵(尽管将其视为(3×3)×(3 ×3)张量。
除此之外,太好了!我认为类别向量空间是类别理论的一个很好的切入点。

但是,这与“ Haskell中的类别”没有直接关系,除非Haskell中的类别也遵守类别法则。如果您只是想通过一些例子了解这些法律,以大致了解类别,并最终在Haskell中也使用它们-公平的。
但是,如果您实际上想在Haskell中使用特定类别,例如 Vect k 本身,那将是一个棘手的故事,因为大多数人所谓的“ Haskell中的类别”实际上太弱了:它们要求所有Haskell类型都可以是对象。但是大多数类型不能被明智地视为向量空间,因此您需要更细微的类别概念。这是由subhask library或我自己的constrained-categories提供的。两者都已用于实现向量空间的类别:

http://hackage.haskell.org/package/subhask-0.1.1.0/docs/SubHask-Algebra-Vector.html http://hackage.haskell.org/package/linearmap-category-0.3.4.0/docs/Math-LinearMap-Category.html