首页 > 解决方案 > Fantasy-land/id 是做什么的?

问题描述

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

我真的不明白这个签名是什么意思?id是一个方法,它接受零个参数并返回一个类别和其他两个东西。

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

标签: javascriptcategory-theoryfantasyland

解决方案


范畴由对象和态射(箭头)组成。如果你想在 Haskell 中定义一个类别,你几乎会被对象作为类型所困。但是对于任何两个对象,您都可以定义一组态射:hom 集。在这里,c是一个类型构造函数,它接受两个对象(类型),比如说ab并产生一个 hom-set c a b。在最简单的示例中,只需替换c(->). 在这种情况下c a b变为a->b(使用中缀表示法)。同理c a a对应a->a。这些态射之一被指定为恒等态射。该函数() -> c a a选择了该态射。完整的定义还必须包括组合运算符(.)这需要两个可组合的 hom 集并产生第三个和定律。但是,单位和结合律在 Haskell 中是无法表达的。


推荐阅读