将类型变量添加到新类型定义
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
的用途,但既然你提到了,我就补充了。
在 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
的用途,但既然你提到了,我就补充了。