Добавить переменную типа в определение нового типа - PullRequest
1 голос
/ 12 марта 2019

В упражнении из Haskell Programming из First Principles говорится, что нужно объявить экземпляр 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

1 Ответ

6 голосов
/ 12 марта 2019

Вам, вероятно, нужно использовать аргумент для Baz:

newtype Baz a = Baz (a, a) deriving (Eq, Show)
        -- ^^^ --

instance (Num a, TooMany a) => TooMany (Baz a) where
   ...

Я не уверен, для чего нужен Num a, но я добавил это, так как вы упомянули это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...