Haskell 向量空间加矩阵作为范畴

Haskell 向量空间加矩阵作为范畴,haskell,Haskell,我试图用向量空间来理解Haskell中的范畴。 我画了一幅画,谁能帮我复习一下吗。 我不确定这张图片是否适合分类 在您的图片中,有一点可能不太准确:重要的是对象是向量空间而不是向量!,而态射是矩阵,我更喜欢说,线性映射。无论如何,这些都是单个实体,而不是“矩阵空间”。虽然矩阵本身是向量空间的元素,但矩阵不是向量空间,而是单个向量。因此,应该将“对象”气泡更改为不包含矩阵,而是包含矩阵集。更详细地说:3×3矩阵空间之间的线性映射实际上是一个9×9矩阵,而不是另一个3×3矩阵,尽管将其视为3×3×3

我试图用向量空间来理解Haskell中的范畴。 我画了一幅画,谁能帮我复习一下吗。 我不确定这张图片是否适合分类


在您的图片中,有一点可能不太准确:重要的是对象是向量空间而不是向量!,而态射是矩阵,我更喜欢说,线性映射。无论如何,这些都是单个实体,而不是“矩阵空间”。虽然矩阵本身是向量空间的元素,但矩阵不是向量空间,而是单个向量。因此,应该将“对象”气泡更改为不包含矩阵,而是包含矩阵集。更详细地说:3×3矩阵空间之间的线性映射实际上是一个9×9矩阵,而不是另一个3×3矩阵,尽管将其视为3×3×3张量是有意义的。除此之外,很棒!我认为范畴向量空间是范畴理论的一个很好的切入点

但是,这与“Haskell中的类别是什么”没有直接关系,除非Haskell中的类别也遵守类别法则。如果你只是想通过一些例子来理解这些定律,那么你可以大致了解这些类别,并最终在Haskell–fair中使用它们。 但如果你真的想在Haskell中使用特定的类别,比如Vectk本身,那就有点棘手了,因为大多数人所说的“Haskell中的类别”实际上太弱了:它们要求所有Haskell类型都可以是对象。但大多数类型不能被合理地视为向量空间,所以你需要一个更微妙的范畴概念。这是由我或我自己提供的。这两种方法都用于实现向量空间的类别:


在您的图片中,有一点可能不太准确:重要的是对象是向量空间而不是向量!,而态射是矩阵,我更喜欢说,线性映射。无论如何,这些都是单个实体,而不是“矩阵空间”。虽然矩阵本身是向量空间的元素,但矩阵不是向量空间,而是单个向量。因此,应该将“对象”气泡更改为不包含矩阵,而是包含矩阵集。更详细地说:3×3矩阵空间之间的线性映射实际上是一个9×9矩阵,而不是另一个3×3矩阵,尽管将其视为3×3×3张量是有意义的。除此之外,很棒!我认为范畴向量空间是范畴理论的一个很好的切入点

但是,这与“Haskell中的类别是什么”没有直接关系,除非Haskell中的类别也遵守类别法则。如果你只是想通过一些例子来理解这些定律,那么你可以大致了解这些类别,并最终在Haskell–fair中使用它们。 但如果你真的想在Haskell中使用特定的类别,比如Vectk本身,那就有点棘手了,因为大多数人所说的“Haskell中的类别”实际上太弱了:它们要求所有Haskell类型都可以是对象。但大多数类型不能被合理地视为向量空间,所以你需要一个更微妙的范畴概念。这是由我或我自己提供的。这两种方法都用于实现向量空间的类别:


re:对象气泡应更改为。。。包含矩阵集:这看起来真的像是一种干扰。如果你完全摆脱了矩阵作为对象的角色,只关注它们作为态射的角色,画面就会更清晰。@luqui一方面是的,然而,事实上,你可以拥有包含态射的对象,这是非常好的了解,特别是为了准备一个笛卡尔封闭类别,如Hask.re:对象气泡应该改为。。。包含矩阵集:这看起来真的像是一种干扰。如果你完全摆脱了矩阵作为对象的角色,只关注它们作为态射的角色,情况会更清楚。@luqui一方面是的,但是事实上,你可以拥有包含态射的对象,这是非常好的,特别是为了准备一个笛卡尔闭范畴,比如Hask。