c++11 - C++ 仿函数是范畴论意义上的仿函数吗?

标签 c++11 category-theory

C++ 仿函数是一个支持重载 () 运算符的类。这是范畴论意义上的仿函数吗?什么是对象和态射?

最佳答案

不,正如 Hurkyl 所说,尽管在面向对象编程中由“对象”推断出名称冲突,但 OOP 仿函数与范畴论仿函数无关。与 OOP 的更好匹配是重命名 OOP classcategory , 以及类型之间的转换作为仿函数。像这样的东西:

category Shape;
category Rectangle : forgetful functor Shape;
category Polygon : forgetful functor Shape
{
    functor Polygon( Rectangle & );
};

代替
class Shape;
class Rectangle : public Shape;
class Polygon : public Shape
{
    implicit Polygon( Rectangle & );
};

唉,开发OOP的人和开发范畴论的人不一样,因此术语不同。

关于c++11 - C++ 仿函数是范畴论意义上的仿函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38358988/

相关文章:

c++ - 单例、shared_ptr、原始指针或其他指针?

C++ 重载后缀运算符

scala - 为什么 Functor 是更高种类的类型

haskell - Haskell中扩展类型类的含义是什么?

c++ - 为什么构造函数在使用 CHAR 类型的参数调用时选择类型 INT 而不是 SHORT?

c++ - 智能指针和数组

javascript - 编程中是否有任何通用仿函数(不限于内仿函数)用法?

haskell - 每个单子(monad)都是幺半群?

haskell - 一个环境如何恰好是一个部分应用函数,甚至是一个 hom 仿函数?

c++ - 在 C++ 11 中将指针传递给临时变量?