を生じるハスケルないインスタンス:のための...私は再帰カウントテイラーという関数を記述しようとしている
mcloren x = log (1+x)/(1-x)
compareWithDelta' :: (Num a, Floating a, Integral a, Ord a) => a -> a -> Bool
compareWithDelta' x acc = abs (acc - mcloren x) < 1.0e-10
mcl :: (Floating a, Integral a, Num a) => a -> a
mcl x =
let
mcl' x acc y
| compareWithDelta' x acc = acc
| otherwise = mcl' x (2*(x^(2*y+1)/(2*y+1))) (y+1)
in
mcl' x 0 0
しかし、私はこれらのエラーメッセージがあります。
No instance for (Num a0) arising from a use of 'mcl'
The type variable 'a0' is ambiguous
Possible fix: add a type signature that fixes these type variable(s)
Note: there are several potential instances:
instance Num Double — Defined in 'GHC.Float'
instance Num Float — Defined in 'GHC.Float'
instance Integral a => Num (GHC.Real.Ratio a)
— Defined in 'GHC.Real'
...plus three others
In the expression: mcl 1
In an equation for 'it': it = mcl 1
それが何を意味し、どのようにそれを修正するには?
私はGHCは1がこのような場合のためにユーザがプログラムの警告/エラーを指定することができるようになりたいです。のように、 "型のチェック/推論の後に' Num(a-> b) 'がそれを示唆しているのであれば..." – chi