- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望有人能够解释 GHCi 中使用 fromIntegral 函数时的以下行为:
Prelude> let x = 1 :: Integer
Prelude> :t x
x :: Integer
Prelude> sqrt $ fromIntegral x
1.0
Prelude> let y = fromIntegral x
Prelude> sqrt y
<interactive>:181:1:
No instance for (Floating Integer)
arising from a use of `sqrt'
Possible fix: add an instance declaration for (Floating Integer)
In the expression: sqrt y
In an equation for `it': it = sqrt y
为什么设置 y
然后获取其 sqrt
还是直接获取 sqrt
很重要?
最佳答案
fromIntegral
的返回类型是多态的。因此,代码中 y
的类型预计为 Num a => a
。这种类型允许您毫无问题地使用 y
作为 sqrt
的参数。
但是由于单态性的限制,y
的类型不允许是多态的。因此它默认为默认的 Num 类型,即 Integer
。
当您执行 sqrt $ fromIntegral x
时,单态限制不适用,因为它仅适用于全局变量,并且您不会将 fromIntegral
的结果存储在变量中这次。
您可以通过向 y 添加类型签名 (let y::Num a => a; y = fromIntegal x
) 或禁用单态限制来解决此问题。
关于haskell - 与 GHCi 中 fromIntegral 的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11439163/
我有多个Word8我正在添加的值。因为这可能会导致溢出,所以结果必须是 Word16 . 有没有比以下更好的方法将所有这些值加在一起: fromIntegral a + fromIntegral b
fromIntegral 的类型为 (Num b, Integral a) => a -> b。我想了解这是怎么可能的,可以根据需要将任何整数转换为任何数字类型的代码是什么。 actual code对
我刚刚开始用 Haskell 编程,我正在解决 99 Haskell problems ,当我快完成第 10 个时,我遇到了这个问题: -- Exercise 9 pack :: Eq a => [a
我正在经历“Real World Haskell”,并且正在做随之而来的练习。 我注意到一些我认为很奇怪的事情。 以这个函数为例: myAverage :: (Fractional a) => [a]
通过 fromIntegral 理解类型转换 所以,我最近遇到了很多类型转换错误。这让我开始使用 fromIntegral,尽管我对它的工作方式感到非常困惑。 minimalExample :: In
LYAH将 fromIntegral 描述为: From its type signature we see that it takes an integral number and turns it
每当我使用 double 和整数编写函数时,我都会发现这个问题,我经常不得不在函数的任何地方使用“fromIntegral”。例如: import Data.List roundDouble
我希望有人能够解释 GHCi 中使用 fromIntegral 函数时的以下行为: Prelude> let x = 1 :: Integer
我是一名优秀的程序员,十分优秀!