В упражнении из Haskell Programming из First Principles говорится, что нужно объявить экземпляр TooMany для типа (Num a, TooMany a) => (a, a), сначала создав для него newtype. Моя проблема заключается в добавлении ограничения класса типов к Baz. Это вообще возможно? Я не могу найти другие примеры онлайн.
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, но я добавил это, так как вы упомянули это.
Num a