Полиморфные алгебраические типы данных можно рассматривать не только как типы с определенной структурой, но и как операции над множествами их значений. Например для некоторых двух типов a и b операцией объединения будет тип data Either a b = Left a | Right b, а операцией декартового произведения будет тип, аналогичный кортежу из двух элементов:
(
Read more... )
Comments 3
В GHC такое есть.
вот это ->
data QQQ a b = QQQ a b deriving Show
type WWW = Int `QQQ` Int
a :: WWW = 6 `QQQ` 5
работает, и print a выдаёт QQQ 6 5.
Reply
Я тестил, но у меня из-за какой-то посторонней ошибки не получилось.
А приоритет как? Через infixl/infixr/infix?
Reply
Там есть проблема с инфиксными конструкторами,
состоящими из небуквенных символов, например :>
Помнится, пробовал, но не все из них работают.
Reply
Leave a comment