首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

#汽车

汽车行业应用平台解决方案,包含车联网云、自动驾驶云、大数据、智慧出行等

能否用gym搭建陆空两栖飞行汽车的仿真环境?

anylogic怎么实现速度满足于正态分布呢?

如何在使用VeinsInetMobility时获得汽车roadid?

汽车场景识别相关接口返回结果疑问?

GHC中自动专业化的传递性?

akjok54stay hungry stay foolish
简短的答案: 根据我的理解,这个问题的关键点如下: “是自动专业化的传递? 我是否应该只希望(+)用一个明确的附注来传递专门知识? (显然打算)这是GHC的错误?是否与文档不一致? AFAIK,答案是否定的,大部分是的,但还有其他的方法,并没有。 代码内联和类型应用程序专门化是速度(执行时间)和代码大小之间的折衷。默认级别得到一些加速而不会膨胀的代码。选择更详尽的级别由程序员通过SPECIALISE编译指示来决定 。 说明: 优化器还考虑每个导入的INLINABLE重载函数,并将其专门用于在M中调用它的不同类型。 假设f是一个函数,其类型包含一个a受类型类限制的类型变量C a。GHC默认专门f相对于应用程序的类型(取代a为t)如果f被调用,在同一模块中的(a)的任何函数的源代码的类型的应用程序,或(b)如果f被标记INLINABLE,则任何其它模块,其 进口 f从B。因此,自动分类不是可传递的,它只涉及在源代码中INLINABLE导入和调用的函数。A 在你的例子中,如果你重写了Num如下的实例: instance (Num r, Unbox r) => Num (Qux r) where (+) = quxAdd quxAdd (Qux x) (Qux y) = Qux $ U.zipWith (+) x y quxAdd不是专门输入的Main。Main导入实例字典Num (Qux Int),并将该字典包含quxAdd在记录中(+)。但是,虽然字典是导入的,但字典中使用的内容不是。 plus不调用quxAdd,它使用(+)实例字典中存储的记录函数Num t。这个字典是Main由编译器在调用站点(in )设置的。c... 展开详请
简短的答案: 根据我的理解,这个问题的关键点如下: “是自动专业化的传递? 我是否应该只希望(+)用一个明确的附注来传递专门知识? (显然打算)这是GHC的错误?是否与文档不一致? AFAIK,答案是否定的,大部分是的,但还有其他的方法,并没有。 代码内联和类型应用程序专门化是速度(执行时间)和代码大小之间的折衷。默认级别得到一些加速而不会膨胀的代码。选择更详尽的级别由程序员通过SPECIALISE编译指示来决定 。 说明: 优化器还考虑每个导入的INLINABLE重载函数,并将其专门用于在M中调用它的不同类型。 假设f是一个函数,其类型包含一个a受类型类限制的类型变量C a。GHC默认专门f相对于应用程序的类型(取代a为t)如果f被调用,在同一模块中的(a)的任何函数的源代码的类型的应用程序,或(b)如果f被标记INLINABLE,则任何其它模块,其 进口 f从B。因此,自动分类不是可传递的,它只涉及在源代码中INLINABLE导入和调用的函数。A 在你的例子中,如果你重写了Num如下的实例: instance (Num r, Unbox r) => Num (Qux r) where (+) = quxAdd quxAdd (Qux x) (Qux y) = Qux $ U.zipWith (+) x y quxAdd不是专门输入的Main。Main导入实例字典Num (Qux Int),并将该字典包含quxAdd在记录中(+)。但是,虽然字典是导入的,但字典中使用的内容不是。 plus不调用quxAdd,它使用(+)实例字典中存储的记录函数Num t。这个字典是Main由编译器在调用站点(in )设置的。c
领券