List Int和List String在Haskell /类别理论中是否属于同一类别?

时间:2018-07-08 21:37:32

标签: haskell category-theory

Haskell /类别理论中的List Int和List String是否属于同一类别?

  • 列出整数
  • 列出字符串

都是列表。

他们认为是同一类别吗?

谢谢。

2 个答案:

答案 0 :(得分:5)

否-或更确切地说,亩。没有关于目标对象和箭头的详细信息,它们都不是第一类。

您可能会想到的是Hask类别,该类别将Haskell类型视为对象,而Haskell函数则视为箭头。在此类别中,[Int][String]是不同的对象,它们之间没有(从非技术意义上来说是自然的)同构。

答案 1 :(得分:2)

除了每种类型都是 Hask (类型和函数的类别)中的对象之外,每种列表类型还可以被认为是不同的类别,因为它们是类半体动物:

  1. 该类别包含一个虚拟对象;除了作为态射的终点,它什么也没代表。
  2. 每个列表对应一个不同的词素。
  3. 同一性态是空列表[]
  4. 组成对应于列表串联(++)。例如:

    1. [1] ∘ [2,3] == [1] ++ [2,3] == [1,2,3]
    2. [2,3] ∘ [1] == [2,3] ++ [1] == [2,3,1]
    3. [] ∘ [1] == [] ++ [1] == [1]
    4. [1] ∘ [] == [1] ++ [] == [1]