1
分数型をダブルに追加する必要がある関数を定義しようとしていますが、エラーが発生するようです。分数型の追加に関する問題
epsilon = 0.0000001
dif :: (Fractional a) => (a->a) -> a -> a
dif f x = (f(x+epsilon)-f(x))/epsilon
HaskellはトラブルのX +イプシロンを解釈を有することと思われるが、これは、xが関数宣言およびイプシロンに分数型であると定義されていることを考えると、奇数思わフラクショナル型クラスの一部である(二重です?相続人
私が取得エラー:
Couldn't match expected type ‘a’ with actual type ‘Double’
‘a’ is a rigid type variable bound by
the type signature for dif :: Fractional a => (a -> a) -> a -> a
at dif.hs:3:8
Relevant bindings include
x :: a (bound at dif.hs:5:7)
f :: a -> a (bound at dif.hs:5:5)
dif :: (a -> a) -> a -> a (bound at dif.hs:5:1)
In the second argument of ‘(+)’, namely ‘epsilon’
In the first argument of ‘f’, namely ‘(x + epsilon)’
はありがとう
特に、 'epsilon'はDoubleですので、' dif'は 'a〜Double'だけで動作します。しかし、型シグネチャは、*任意の* Fractional aで動作することを約束しています。コンパイラは、あなたの実装が 'dif'に依存しているので、この約束通りではないことに気づいています。 – amalloy