monomorphism-restriction相关内容

为什么 3 和 x(被赋值为 3)在 Haskell 中有不同的推断类型?

Haskell 中的类型推断有一点学习曲线(至少可以这么说!).开始学习它的一个好方法是使用简单的示例.因此,以下是类型推断的“hello world". 考虑以下示例: 前奏>:t 33 :: (Num t) =>吨前奏>让 x = 3前奏>:t xx :: 整数 问题是这样的:为什么 3 和 x 有不同的类型? 链接摘要: 阅读以下答案以了解完整故事;这里只是一个链接摘要 ..
发布时间:2021-12-14 11:40:32 其他开发

为什么在 Haskell 中没有推断出多态值?

数字文字具有多态类型: *Main>:t 33 :: (Num t) =>吨 但是如果我将变量绑定到这样的文字,多态性就会丢失: x = 3...*主要>:t xx :: 整数 另一方面,如果我定义一个函数,它当然是多态的: f x = 3...*主要>:t ff :: (Num t1) =>t->t1 我可以提供一个类型签名来确保 x 保持多态: x :: Num a =>一个x ..

ghci-默认混乱

在检查不同整数类型的大小(minBound,maxBound)和“十进制表示的长度"时,我偶然发现一些奇怪的行为. 使用GHCi: Prelude> :{ Prelude| let mi = minBound Prelude| ma = maxBound Prelude| le = fromIntegral $ length $ show ma Prelude| in ..
发布时间:2020-11-14 18:35:19 其他开发

推断的泛型函数typechecks作为返回类型,而不是参数类型

我正在学习SYB和n级类型,并且遇到了一个令人困惑的单态性限制案例. 我编写了一个函数来查找与谓词匹配的最浅条目.我想使用Alternative接受一个类似于谓词的函数,而不是归约函数,然后自己将其转换为一个泛型函数.我决定在let块中省略类型注释,以了解单态减少将如何影响此实现中的类型: shallowest :: (Alternative f, Typeable b) => (b ..

为什么要将sq改为无点改变类型

可能存在重复: 为了尝试和练习一点haskell并了解免费点数,我正在玩一个函数来计算一个数字 所以我开始定义 >让dup fx = fxx 所以我可以用dup重写sq(不用担心现在可以免费使用dup点) >让sq x = dup(*)x 并检查sq的类型,看看我期望看到什么 >:t sq > sq :: Num t => t ..
发布时间:2018-06-05 11:29:15 其他开发

使用uncurry函数的特定类型推断

我一直在玩GHCi中的 uncurry 函数,我发现了一些我根本无法理解的东西。当我将 uncurry 应用于(+)函数并将其绑定到某些变量(如下面的代码)时,编译器推断它的类型特定于整数: Prelude>让add = uncurry(+) Prelude> :t add add ::(Integer,Integer) - >整数 但是,如果要求获得以下表达式的类型 ..
发布时间:2018-06-04 17:33:29 其他开发

什么是XNoMomoMorphorphismRestriction?

此页用法 $ ghci -XNoMonomorphismRestriction 启动haskell解释器。 XNoMonomorphismRestriction 开关是什么意思? 解决方案 它关闭 Monomorphism限制,限制值为没有使用“函数表示法”1定义为非多态类型。 1通过“not using function notation”我的意思是它们被定义为 ..
发布时间:2018-06-04 17:24:38 其他开发

为什么3和x(被分配了3)在Haskell中具有不同的推断类型?

Haskell中的类型推断有一点学习曲线(至少可以说!)。开始学习它的一个好方法是用简单的例子。因此,下面是一些类型推断的“hello world”。 考虑下面的例子: 前奏> :t 3 3 ::(Num t)=> t 前奏>让x = 3 Prelude> :tx x :: Integer 问题在于:为什么3和x有不同的类型? 链接摘要: ..
发布时间:2018-06-04 14:28:31 其他开发