このデータ型を次のインスタンスにしようとしていますFunctor
:
data Fraction = Frac Integer Integer deriving Show
ただし、このように定義しても機能しません。
instance Functor Fraction where
pure = Frac 1 1
fmap f (Frac a b) = Frac (f a) (f b)
この機能が必要であり、データをFunctorのインスタンスにすることをお勧めします。しかし、のパラメータFraction
は常に2つであるため、これはいくつかの法則に違反しますIntegers
か?
私はいつでも自分で書いfmap
て宣言を避けることができましFunctor
たが、私は言語にもっと慣れようとしているので、助けていただければ幸いです!