小编pfe*_*ror的帖子

Prolog是vs = with lists

为什么会出现这种失败L is [1,2,3,4],而且这工作:L = [1,2,3]

但是L is 1,L = 1两者都是一样的.

resolution prolog unification

11
推荐指数
1
解决办法
2万
查看次数

在Haskell的分部,仍然没有得到它

我仍然不理解Haskell中的划分.我的第一个目的是定义一个这样的函数:

piApprox :: (Integral a, Fractional b) => a -> b
piApprox n = 4 * sum [ (-1)^k / (2*k + 1) | k <- [0..n] ]
Run Code Online (Sandbox Code Playgroud)

它不起作用.然后,使用签名:

piApprox :: (Fractional a) => Int -> a
Run Code Online (Sandbox Code Playgroud)

但它再次引发了"无法演绎"错误.

如果我在解释器中运行此代码以找出最佳签名,结果是:

Prelude> let piApprox n = 4 * sum [ (-1)^k / (2*k + 1) | k <- [0..n] ]
Prelude> :t piApprox
piApprox :: (Fractional a, Integral a) => a -> a
Run Code Online (Sandbox Code Playgroud)

引发"类型变量`a0'是模糊的"错误.

现在,进行此计算的唯一方法是我可以想到包括Ratio包然后double通过使用转换为fromRational.

import …
Run Code Online (Sandbox Code Playgroud)

int haskell types integer division

7
推荐指数
1
解决办法
370
查看次数

标签 统计

division ×1

haskell ×1

int ×1

integer ×1

prolog ×1

resolution ×1

types ×1

unification ×1