如何解决集类别中的身份函子是功能应用程序吗?
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 举报,一经查实,本站将立刻删除。