微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。