3

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 の初心者です。

4

1 に答える 1