は、私が問題に遭遇している一緒にHaskellは実際の型と予想されるfloat型が一致しませんでした「」タプルの2部を追加しようとすると
機能タイプ:
close :: (Floating a, Ord a) => (a,a) -> (a,a) -> Float
関数の定義:フォーマットの機能AYタプル(、)およびフォーマットの斧タプルを供給するオン
close y x = sqrt (((fromIntegral(snd x) - fromIntegral(snd y))^2) + ((fromIntegral(fst x) - fromIntegral(fst y)^2)))
(、)は、2つの座標間の距離を計算する必要があります。 は、しかし、起動時に、私はのエラーを取得する:
Couldn't match expected type 'Float' with actual type 'a'
a is a rigid type variable bound by...
私は、問題が生じている理由を理解して、私はあなたがこれをデバッグするのに役立つ
あなたは型定義で 'フローティングA'に言及して、競合である' Integral'型クラスに属することになっているのと同じ 'A'タイプ...と機能に' fromIntegral'を養います。 – Redu
結果を生成するには、 'Floating a => a - > Float'関数が必要です。私は 'close :: Floating a =>(a、a) - >(a、a) - > a'、または' close ::(Integral a、Floating b)=>(a、a) a、a)→b 'である。 'Ord'と' Float'はどこから来たのですか? – molbdnilo
@molbdnilo多分彼は出力から具体的な 'Float'を望んでいますか? –