私が取得していますGHCiのfactorPairs 18
で関数を呼び出すと、私は与えられた数あいまいなタイプは `の使用に起因する」変数` A0'
factorPairs:: (RealFrac a, Floating a, Integral a) => a -> [(a, a)]
factorPairs n = map(\x -> (x, div n x)) [y | y <- [1..(ceiling $ sqrt n)], n `rem` y == 0]
要因ペアを返すために、以下の機能を持っています
* Ambiguous type variable `a0' arising from a use of `it'
prevents the constraint `(Floating a0)' from being solved.
Probable fix: use a type annotation to specify what `a0' should be.
These potential instances exist:
instance Floating Double -- Defined in `GHC.Float'
instance Floating Float -- Defined in `GHC.Float'
* In the first argument of `print', namely `it'
In a stmt of an interactive GHCi command: print it
の実行時エラーが、私はハードGHCiの
map(\x -> (x, div 18 x)) [y | y <- [1..(ceiling $ sqrt 18)], 18 `rem` y == 0]
に機能をコーディングすることができますし、すべての問題を持っていないが、私はできないようです私の機能が失敗している理由を理解する。私はghciがどのタイプをprint
と呼ぶのか分かりませんが、解決策を見つけるのは苦労していると私に伝えようとしています。
次のように試してください:「y map」(y | y < - [1(ceiling $ sqrt 18)]、18 'rem' y == 0 ]をGHCiに入力して推論する。 – Mephy
あなたのタイプ署名を再考する必要があります。 'Floating'と' Integral'の両方の型を指定できますか?関数を単調にすることをお勧めします。例えば、 'Double'を使い、必要なときにのみ一般化してください。 –
@ ThomasM.DuBuisson私は実際にそれを楽しみのために考えていました。浮動小数点型と整数型の_reasonable_型がありますか?また、型に基づいて関数を検索するためにhoogleやhayooを使用できるように、インスタンスに基づいて型を検索する方法はありますか? – Alec