1. ホーム
  2. haskell

[解決済み] HaskellでIntからsqrtを取得する

2022-02-28 17:38:28

質問

どうすれば sqrt から Int .

そう心がけています。

sqrt . fromInteger x

しかし、型の互換性でエラーが発生します。

どうすればいいですか?

使用方法 fromIntegral :

Prelude> let x = 5::Int
Prelude> sqrt (fromIntegral  x)
2.23606797749979

両方 IntInteger のインスタンスです。 Integral :

  • fromIntegral :: (Integral a, Num b) => a -> b は、あなたの Int (のインスタンスである)。 Integral を作成し、それを Num .

  • sqrt :: (Floating a) => a -> a が期待されます。 Floating であり、かつ Floating を継承しています。 Fractional を継承し、さらに Num に渡すことができるので、安全に sqrt の結果は fromIntegral

というクラスがあると思います。 ダイアグラム ハスケルWikibook は、このような場合に非常に便利です。