作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么这种类型的单一用法可以编译,但将其放入列表会失败?
ft1 :: (Foldable t, Num a) => t a -> a
ft1 = (F.foldl (+) 0)
fTest :: [(Foldable t, Num a) => t a -> a ]
fTest = [ F.foldl (+) 0 ]
folding.hs:80:10:
Illegal polymorphic or qualified type:
(Foldable t, Num a) => t a -> a
Perhaps you intended to use ImpredicativeTypes
In the type signature for `fTest':
fTest :: [(Foldable t, Num a) => t a -> a]
type Ftst t a = (Foldable t, Num a) => t a -> a
folding.hs:80:1:
Illegal polymorphic or qualified type:
(Foldable t, Num a) => t a -> a
Perhaps you intended to use RankNTypes or Rank2Types
In the type declaration for `Ftst'
最佳答案
对 Haskell 类型系统的这种限制是为了简化类型推断和检查。具有预测等级 1 类型(见下文)的类型推断是可判定的,并且具有相对简单的实现。 rank-2 类型的类型推断是可判定的,但相当复杂,以至于我不知道任何具有 rank-2 类型推断实现的语言。等级 3 及以上类型的类型推断是完全不可判定的。谓词类型也使事情变得相当复杂。 GHC 曾经有一个实现,允许使用不可预测的类型进行类型检查(以及一些非常有限的推断),但它太复杂了,后来被删除了。 (目前 GHC 仍然接受一些仅使用不可预测类型进行类型检查的值,但我认为这不被视为“稳定”功能。)
快速定义:rank-1 类型在类型“外部”具有所有量化和类约束,因此所有 rank-1 类型都具有以下形式
forall a_1 ... a_m. (C_1, ..., C_n) => t
[]
类型构造函数
forall t a. (Foldable t, Num a) => t a -> a
试图将构造函数应用于多态类型,因此仅在不可预测的系统中有效。
关于Haskell - 非法多态类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27895196/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!