我正在尝试将此数据类型设为以下实例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
声明,但我正在努力更熟悉这种语言,所以任何帮助都将不胜感激!