Haskell 如何解决此不明确的类型变量错误?
以下代码编译得很好,但我无法使用我的函数: 代码: 错误: 约束中不明确的类型变量“t”: `因在1:0-6处使用“g”而产生的积分t `因在1:0-6处使用“g”而产生的分数t 可能修复:添加修复这些类型变量的类型签名 为什么会发生这种情况,我该如何解决?我正在Windows下运行GHC 6.10.4,如果相关的话Haskell 如何解决此不明确的类型变量错误?,haskell,types,typeclass,Haskell,Types,Typeclass,以下代码编译得很好,但我无法使用我的函数: 代码: 错误: 约束中不明确的类型变量“t”: `因在1:0-6处使用“g”而产生的积分t `因在1:0-6处使用“g”而产生的分数t 可能修复:添加修复这些类型变量的类型签名 为什么会发生这种情况,我该如何解决?我正在Windows下运行GHC 6.10.4,如果相关的话 我已经看过这个相关的,但我认为它不能满足我的需要。我不太确定这个函数应该做什么,但你的问题似乎是你使用了天花板,它有类型 (RealFrac a, Integral b) =&g
我已经看过这个相关的,但我认为它不能满足我的需要。我不太确定这个函数应该做什么,但你的问题似乎是你使用了天花板,它有类型
(RealFrac a, Integral b) => a -> b
这将强制整个结果在类Integral中,这可能不是您想要的结果。添加FromIntegral,从而将最后一行更改为
g n x = ((map (\z -> (fromIntegral $ ceiling z)^2) (1:[0.5,1..]))!!(n-1))*x / ((g (n+1) x) + fromIntegral n)
使函数编译并为其指定类型
g :: (Fractional b) => Int -> b -> b
我不太确定这个函数应该做什么,但你的问题似乎是你使用了天花板,它有一个类型
(RealFrac a, Integral b) => a -> b
这将强制整个结果在类Integral中,这可能不是您想要的结果。添加FromIntegral,从而将最后一行更改为
g n x = ((map (\z -> (fromIntegral $ ceiling z)^2) (1:[0.5,1..]))!!(n-1))*x / ((g (n+1) x) + fromIntegral n)
使函数编译并为其指定类型
g :: (Fractional b) => Int -> b -> b
@蒂尔彭:你一针见血。我想
天花板
也是个问题。谢天谢地,fromIntegral
的存在就是为了解决这种情况。@Tirpen:你一针见血。我想天花板
也是个问题。谢天谢地,fromIntegral
的存在就是为了解决这种情况。