You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Haskell中使用fromIntegral时指定(4 :: Integral)会报错?

Haskell代码报错原因解析

你写的代码报错核心问题在于:Integral不是具体的类型,而是类型约束(它的kind是* -> Constraint),不能直接用来给数值指定类型。

fromIntegral的类型签名明确要求第一个参数是实现了Integral约束的具体类型(比如Int、Integer这类):

fromIntegral :: (Integral a, Num b) => a -> b

你写的(4 :: Integral)试图把4的类型指定为Integral,但Haskell需要的是具体类型而非约束,所以编译器抛出错误。

正确写法

只要给4指定一个具体的Integral类型即可,比如:

-- 使用Int类型
fromIntegral (4 :: Int) :: Double
-- 或者使用Integer类型
fromIntegral (4 :: Integer) :: Double

执行以上代码就能得到预期的4.0。

内容的提问来源于stack exchange,提问作者Евгений Прудилов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:55:13