将类型变量添加到新类型定义

Add type variable to newtype definition

在 Haskell 从第一原则编程的练习中,它说通过首先为它创建一个 newtype 来为类型 (Num a, TooMany a) => (a, a) 声明一个 TooMany 的实例。我的问题是向 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 的用途,但既然你提到了,我就补充了。