fantasy-land/id :: Category c => () -> c a a


我真的不明白这个签名怎么说? id是一种方法,它接受零个参数,并返回类别和另外两件事。

那是对的吗?这有什么意义呢?

最佳答案

类别由对象和态射(箭头)组成。如果要在Haskell内定义类别,则几乎将对象作为类型卡住了。但是对于任何两个对象,您都可以定义一组射射:hom-set。在这里,c是一个类型构造函数,它接受两个对象(类型),例如ab,并生成一个hom-set c a b。在最简单的示例中,只需将c替换为(->)。在这种情况下,c a b变为a->b(使用中缀符号)。同样,c a a对应于a->a。这些词素之一被称为同一性词素。函数() -> c a a选择该态射。完整的定义还必须包括组成运算符(.),该运算符采用两个可组合的hom-set并产生第三个hom-set,以及定律。但是,单位法和结社法在Haskell中无法表达。

10-06 01:05