Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何解决此不明确的类型变量错误?_Haskell_Types_Typeclass - Fatal编程技术网

Haskell 如何解决此不明确的类型变量错误?

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

以下代码编译得很好,但我无法使用我的函数:

代码:

错误:

约束中不明确的类型变量“t”: `因在1:0-6处使用“g”而产生的积分t `因在1:0-6处使用“g”而产生的分数t 可能修复:添加修复这些类型变量的类型签名 为什么会发生这种情况,我该如何解决?我正在Windows下运行GHC 6.10.4,如果相关的话


我已经看过这个相关的,但我认为它不能满足我的需要。

我不太确定这个函数应该做什么,但你的问题似乎是你使用了天花板,它有类型

(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
的存在就是为了解决这种情况。