У меня есть функция, которая выводит свойство booleanlike, заданное тип данных. Эта функция вычисляет свойство по шаблону на первый конструктор типа данных, так что-то вродеHaskell альтернатива длинному списку совпадений шаблонов?
data C = C1 | C2 | .. | Cn
f :: C -> Bool
f (C1 _ _ ... _) = True
f (C2 _ _ ... _) = True
f (C3 _ _ ... _) = False
.
.
.
f (Cn _ _ ..._) = False
Есть ли более компактный способ для выполнения поиска по шаблону, или есть другой (и более компактный) путь о моей проверке собственности? Я предпочитаю не добавлять свойство к определению типа данных, так как оно может быть рассчитано с относительной легкостью.
Я буду использовать это. Изменение моего типа данных приведет к большей потере эстетики в других местах. Теперь я не знал о синтаксисе записи и буду читать дальше. Благодаря! – Haxelaar
Возможно, вы могли бы повернуть каждый из 'C1',' C2', 'C3' и т. Д. В _functions_, которые построят другой тип данных, который имеет структуру, которая проще в работе ... – MathematicalOrchid