Подпись типа Haskell с несколькими ограничениями класса

Как я могу иметь несколько ограничений класса, так что если A является Eq а также B это NumЯ мог бы сказать либо

f :: Eq a => a -> b`

или же

f :: Num b => a -> b

Итак, как я могу иметь Eq a => а также Num b => в то же время?

  • f :: Eq a => Num b => a -> b,
  • f :: Eq a -> Num b => a -> b, а также
  • f :: Eq a, Num b => a -> b

не делал то, что хотел.

1 ответ

Решение

Их обычно называют классовыми ограничениями, так как Eq а также Num называются тип-классы.

Как насчет этого?

f :: (Eq a, Num b) => a -> b

Скобки значимы.

Другие вопросы по тегам