gpt4 book ai didi

haskell - 如何仅使用分布式属性编写可表示实例?

转载 作者:行者123 更新时间:2023-12-04 16:04:04 26 4
gpt4 key购买 nike

假设我有一个为某些复杂的自定义类型 Foo 编写的 Distributive 实例。是否可以仅使用 Distributive 实例中可用的属性来编写 FooRepresentable 实例?而且,如果不是,那么为什么 DistributiveRepresentable 的父类(super class)?

最佳答案

Distributive 之间的父类(super class)关系和 Representable ...

class Distributive f => Representable f where

... 意味着如果 fRepresentable , 那么它也必须是 Distributive ,而不是相反。当用于子类化时,=>应理解为“是……的先决条件”,而不是“暗示”。 (事实上​​,这与 => 用于类型签名约束时的情况相反。出于这个原因,纯脚本 uses <= for subclassing。)

对于大多数其他父类(super class)和子类对,故事到此结束。 DistributiveRepresentable ,但是,有一个特殊的关系,在那Distributive仿函数实际上是可表示的,如 Distributive 的文档所述...

Categorically every Distributive functor is actually a right adjoint, and so it must be Representable endofunctor and preserve all limits. This is a fancy way of saying it isomorphic to (->) x for some x.

... 和 Representable :

A Functor f is Representable if tabulate and index witness an isomorphism to (->) x.

Every Distributive Functor is actually Representable.

Every Representable Functor from Hask to Hask is a right adjoint.

层次结构是这样设置的,Distributive作为父类(super class),因为 Distributive旨在拥有更简单的界面 which is expressible in Haskell 98 ,不像Representable (使用类型族)和 Adjunction (这是一个多参数类型类)。从更概念化的角度来看,分配律意味着每个 Distributive是可表示的,它们不足以弄清楚表示是什么。获取表示形式需要指定它,直接(如 Representable )或间接(如 Adjunction )。

关于haskell - 如何仅使用分布式属性编写可表示实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49497241/

26 4 0
文章推荐: Heroku 平台积分
文章推荐: google-maps - IONIC 2 -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com