我只是对 Haskell 进行了一些研究,然后我开始尝试计算文本中两个单词的 Phi 系数。但是,我遇到了一些我无法解释的非常奇怪的行为。
在剥离所有内容后,我最终得到了这段代码来重现问题:
let sumTup = (sumTuples∘concat) frequencyLists
let sumFixTup = (138, 136, 17, 204)
putStrLn (show ((138, 136, 17, 204) == sumTup))
putStrLn (show (phi sumTup))
putStrLn (show (phi sumFixTup))
这输出:
True
NaN
0.4574206676616167
因此,尽管sumTup
和sumFixTup
显示为相等,但它们在传递给 时表现不同phi
。
的定义phi
是:
phi (a, b, c, d) =
let dividend = fromIntegral(a * d - b * c)
divisor = sqrt(fromIntegral((a + b) * (c + d) * (a + c) * (b + d)))
in dividend / divisor