- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下程序类型检查我是否在命令行上指定它(例如 ghci file.hs
):
import Data.Ratio
foo = let x = [1..]
y = (1%2) + (head x)
in y
Prelude> import Data.Ratio
Prelude Data.Ratio> let x = [1..]
Prelude Data.Ratio> let y = (1%2) + (head x)
<interactive>:1:23:
Couldn't match expected type `Ratio a0' with actual type `Integer'
x
正在急切地键入
[Integer]
相对于更一般的
(Num t, Enum t) => [t]
.
最佳答案
不带参数的绑定(bind),即 x = ...
形式的绑定(bind)受monomorphism restriction ,这意味着 GHC 将尝试使用任何可用的类型信息使其成为非多态的,并回退到 type defaulting解决任何歧义。 (实际上,GHCi 使用 a slightly more permissive set of defaulting rules ,但这对于这个问题并不重要)。
因为在你写 let x = [1..]
时没有其他可用的类型信息。 , 类型默认会导致类型被推断为 [Integer]
, 自 Integer
是默认的数字类型。
有几种方法可以解决这个问题:
> let x = [1..] :: [Rational]
> let f = (+)
> :t f
f :: Integer -> Integer -> Integer
> let f x y = x + y
> :t f
f :: Num a => a -> a -> a
let
来避免该问题。陈述。然后 GHC 可以使用来自第二个绑定(bind)的类型信息来正确推断 x
应该有类型 [Rational]
.> let x = [1..]; y = 1%2 + head x
> :t x
x :: [Ratio Integer]
Integer
, 而它实际上是 Num a => a
,因为后者每次都必须重新计算,而前者可以共享。这是限制首先存在的主要原因。> :set -XNoMonomorphismRestriction
> let x = [1..]
> :t x
x :: (Num t, Enum t) => [t]
.ghci
file . 关于haskell - ghci - 交互模式下的渴望编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490743/
因此,即使更好的解决方案即将出现,急切搜索也是您采用初始解决方案的地方...... 急切搜索的反义词是什么?我所有的谷歌搜索结果都让我引用了 Paul Revere 的骑行。在这些困惑和不确定的时代,
这个问题已经有答案了: Why is this static final variable in a singleton thread-safe? (4 个回答) 已关闭 4 年前。 如果我使用 st
我尝试在 Eager 模式下使用 Tensorflow 计算梯度,但是tf.GradientTape () 仅返回 None 值。我不明白为什么。梯度在 update_policy() 函数中计算。
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我需要使用 Hibernate 从 clob Oracle 列中获取一个字符串, 没有延迟加载,也没有使用 Criteria 查询。它目前返回一个代理类(例如 $Proxy30),但我需要一个字符串(
我是一名优秀的程序员,十分优秀!