集类别中的身份函子是功能应用程序吗?

问题描述

https://ncatlab.org/nlab/show/identity+functor

类别C上的身份函子是映射的函子idC:C→C C的每个对象和同态。身份函子是 Cat中的函子组成的唯一身份。

https://ncatlab.org/nlab/show/function+application

函数f通过与每个输入值x的关联来定义 (属于某个允许的值域)输出值, 通常表示为f(x)或fx。从f和x传递到 f(x)称为函数应用程序,有人说将f应用于x 产生f(x)。

https://ncatlab.org/nlab/show/Set

集合类别中的身份函子是功能应用程序吗?

我问这个的原因在于编程,例如F#,管道运算符

https://riptutorial.com/fsharp/example/14158/pipe-forward-and-backward

 "Hello World" |> print

 value |> f

现在

 value |> map(f)

通常被认为是函子。

在这种理解下,一个简单的功能应用程序

 value |> f

应该是身份仿函数,对吗?

谢谢。

编辑

(endo)Functor

value |> map(f)

identityFunctor (特殊情况:map == identity

value |> identity(f)

因此, identityFunctor 等同于

功能应用程序

value |> f 

用另一种表示法,

f(value)

解决方法

从类别理论转换为编程语言时,将“对象”替换为“类型”,将“形态”替换为“功能”。

当您说value |> map(f)被识别为函子时,函子部分实际上与value的类型有关。通过将类型构造函数应用于其他类型来创建此类型。例如,value可以是整数列表:函子“列表”应用于“整数”。在这种情况下,函数f对整数进行操作,但是map(f)对整数列表进行操作。我们说map“提升” f以对列表进行操作。

身份仿函数将每种类型映射到自身。因此,例如,它将int类型映射为int类型。在这种情况下,map(f)f相同:提升后的f再次为f

函数应用是态射。它需要一对(一个乘积)函数类型和参数类型,并将其映射到结果类型。在这里,需要一对(f,value)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...