Haskell を少し掘り下げて、テキスト内の 2 つの単語のファイ係数を計算することから始めました。ただし、説明できない非常に奇妙な動作に遭遇しました。
すべてを取り除いた後、問題を再現するために次のコードになりました。
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