Hask本地小吗?

时间:2013-04-02 22:35:28

标签: haskell

haskell对象的Hask类是一个本地小类的例子吗?

http://ncatlab.org/nlab/show/locally+small+category

也许不是.. hask作为cpo http://www.cs.gunma-u.ac.jp/~hamana/Papers/cpo.pdf

haskellwiki,http://www.haskell.org/haskellwiki/Hask有非常好的信息,显示Hask不是笛卡尔闭合。

3 个答案:

答案 0 :(得分:2)

什么是Hask?如果它包含所有haskell可定义的“函数”作为态射,那么肯定不是

data Big = Big (Big -> Big)

Big -> Big的“hom set”包含整个无类型的lambda演算!我怀疑它是局部小的,即使你只允许终止函数 - 我认为没有系统-f的集合理论模型。

答案 1 :(得分:1)

Hask对象是可数无限的Haskell类型。 Hask箭头是Haskell函数,它们也是无数的。因此Hask不仅局部小,而且Hask很小。

卡(OB(Hask))=卡(HOM(Hask))=卡(N)

关于Hask的更多细节:

http://yannesposito.com/Scratch/en/blog/Category-Theory-Presentation/

答案 2 :(得分:0)

特别是@PhillipJF,这是一个尝试。我不是想制作最准确或最优雅的Hask模型,我只是想制作 模型。请批评。

如果A是Haskell类型,则在Hask中将类型A 的值定义为类型为A的类型良好的Haskell项的等价类(字符串x,x :: A将为{被类型检查器接受),模数扩展相等。也就是说,如果它们扩展到相同(可能是无限的)正规形式,则认为两个项是相等的,并且没有hnf的两个项也是相等的。这不是可判定的事实是无关紧要的,我们只需要在理论上设定这些条件,我毫不怀疑我们可以这样做。

Hask 的对象成为Haskell类型(原始类型和用户定义的类型;我们假设所有用户可定义的类型都存在并且具有不同的名称。用户定义的类型定义是源代码,所以它们是可数的。只需将它们命名为D0D1,......根据计数。)。

让态射 A - > B A - >的类型的值。乙

A 上的标识成为id :: A -> A的等价类,同样让gf的组合成为{{1}的等价类}}

所有值的集合都是可数集合,因为术语只是有限字母表中的字符串。所以 Hask 的模型很小。

这是错的吗?