myfile.hs で次の型を定義しました。
{-# LANGUAGE DeriveDataTypeable #-}
import Data.Typeable
import Data.Fixed
data E18 = E18 deriving (Typeable)
instance HasResolution E18 where resolution _ = 10^18
type MyDouble = Fixed E18
--myRound :: MyDouble > MyDouble
--myRound x = round x
ラウンド関数は ghci でうまく機能します:
Prelude Data.Fixed> :load myfile.hs
Prelude Data.Fixed> round (3.1::MyDouble)
3
Prelude Data.Fixed>
次のコードをファイルに追加すると:
myRound :: MyDouble -> MyDouble
myRound x = round x
次のコンパイル エラーが発生します。
Prelude Data.Fixed> :load myfile.hs
No instance for (Integral MyDouble)
arising from a use of round
関数内で round を呼び出す方法を教えてください。
PS: ご想像のとおり、私は Haskell の初心者です。