3
私の機能は動作しません。私は多くの異なるタイプの署名を試みました。タイプシグネチャを削除すると、ポイント番号が「p」として機能しません。Haskell Type Signature Error
:t bTable
bTable :: Integral a => a -> a -> a -> a
をしかし、私は入力した場合::
bTable 50 0.8 10
私が手
fak :: (Num a, Ord a) => a->a
fak x
| x <= 1 = 1
| otherwise = x*fak (x-1)
ncr :: Integral a => a -> a -> a
ncr n k = (fak n) `div` (fak(n-k) * fak k)
bTable :: (Integral a, Num b) => a->b->a->a
bTable n p k = (ncr n k) * p^k * (1-p)^(n-k)
推測されるタイプは、私は型シグネチャを削除した場合、私は取得
*** Expression : bTable
*** Expected type : (Integral a, Num b) => a -> b -> a -> a
*** Inferred type : (Integral a, Num a) => a -> a -> a -> a
十分に一般的ではありません
Unresolved overloading
*** Type : (Fractional a, Integral a) => a
*** Expression : bTable 50 0.8 10
若干異なっている
である注Haskellでは自動型変換はありません。 'a * b 'を持っている場合、' a'と 'b'は同じ型でなければなりません。いくつかの倍率で何か他のものが乗算されたときに、「0.8」から「Integral」型を得る方法はありますか? –