为什么对于 Curry class 只考虑 Haskell 中的局部小笛卡尔闭类别是公平的?

Why is it fair to think of just locally small cartesian closed categories in Haskell for the Curry class?

Control.Category.Constrained is a very interesting project that presents the class for cartesian closed categories - Curry.

然而,我不明白为什么我们会想到所有允许 curryuncurryHom(X * Y, Z) ≅ Hom(X, Z^Y) 就范畴论而言)的笛卡尔闭范畴。 Wikipedia says that such property holds only for locally small cartesian closed categories. Under this post many people suggest that Hask itself is not locally small (on the other hand, everyone says that Hask is not a cartesian closed category,我认为这是纯粹而无趣的形式主义。

this post on Math.SE speaks on assuming all categories are locally small. But it is given from a mathematical point of view where we discuss properties. I would like to know why we decided to concentrate on curry and uncurry as Curry的方法中。是因为几乎每个知道 Haskell 的人都知道这些函数吗?还是有其他原因?

I would like to know why we decided to concentrate on curry and uncurry as Curry’s methods. Is it because pretty much everyone who knows Haskell also knows these functions?

作为图书馆作者我可以自信地回答这个问题,答案是:这是因为curryuncurry是公认的部分Haskell 方言。 constrained-categories 从未打算从根本上改变 Haskell and/or 使其在某种意义上在数学上更加可靠,而是巧妙地概括现有的 class 层次结构——主要是为了允许定义函子等. 无法给出 Prelude.Functor 个实例。

Curry 是否可以根据当地的小规模形式化,坦率地说,我不知道。我也不确定那个和其他“数学基础”方面是否可以在 Haskell 库的上下文中进行有意义的讨论。 前面有点跑题这只是事实Haskell 是一种非完整的语言,是的,这意味着几乎任何公理都可以被某些 undefined 攻击所挫败。但我也不认为这是一个问题。许多人似乎认为 Haskell 是一种 恐怖谷 :在现实世界的应用中限制太多,但没有任何东西可以被正确证明。我的看法恰恰相反:Haskell 有一个足够强大的类型系统,能够 表达 对实际应用有用的数学思想,而无需得到它价值语义在底层基础中太深,以至于无法在现实世界中实际使用。 (即,您不会经常花费数周时间来证明一些“显然是真的……”定理。我在看着你,Coq...
我们没有编写 100% 严格的证明,而是尽可能缩小类型的范围,然后使用 QuickCheck 来查看某些东西 通常 是否符合数学要求。

不要误会我的意思,我认为形式化基础也很重要,并且依赖类型的整体语言很棒,但所有这些都在某种程度上忽略了 Haskell 的真正潜力所在。至少它不是 瞄准我 Haskell 发展的地方,包括 constrained-categories。如果对纯数学有更深入了解的人想插话,我很高兴听到。