在来自First Principles的Haskell Programming的练习中,它首先通过为它创建一个TooMany
来声明(Num a, TooMany a) => (a, a)
类型的newtype
实例。我的问题是向Baz
添加类型类约束。它甚至可能吗?我在网上找不到任何其他的例子。
class TooMany a where
tooMany :: a -> Bool
newtype Baz = Baz (a, a) deriving (Eq, Show)
instance TooMany Baz where
tooMany (Baz (n, _)) = n > 42
您可能需要使用Baz
的参数:
newtype Baz a = Baz (a, a) deriving (Eq, Show)
-- ^^^ --
instance (Num a, TooMany a) => TooMany (Baz a) where
...
我不确定Num a
是为了什么,但我补充说,因为你提到它。