Haskell /类别理论中的List Int和List String是否属于同一类别?
都是列表。
他们认为是同一类别吗?
谢谢。
答案 0 :(得分:5)
否-或更确切地说,亩。没有关于目标对象和箭头的详细信息,它们都不是第一类。
您可能会想到的是Hask类别,该类别将Haskell类型视为对象,而Haskell函数则视为箭头。在此类别中,[Int]
和[String]
是不同的对象,它们之间没有(从非技术意义上来说是自然的)同构。
答案 1 :(得分:2)
除了每种类型都是 Hask (类型和函数的类别)中的对象之外,每种列表类型还可以被认为是不同的类别,因为它们是类半体动物:
[]
。组成对应于列表串联(++)
。例如:
[1] ∘ [2,3] == [1] ++ [2,3] == [1,2,3]
[2,3] ∘ [1] == [2,3] ++ [1] == [2,3,1]
[] ∘ [1] == [] ++ [1] == [1]
[1] ∘ [] == [1] ++ [] == [1]