В Haskell, у меня есть модуль с типом частичного порядка:Можно ли создать произвольное разложение шаблонов в Haskell?
data PartialOrder a = PartialOrder [a] [(a, a)]
Я не экспортировать конструктор значение, потому что это не так, как я хочу, чтобы типа, которые будут использоваться, но я все равно хочу, чтобы иметь возможность шаблон соответствует типу PartialOrder вне модуля; Это возможно? В частности, я хочу, чтобы иметь возможность сопоставления с образцом чего-то, что не является конструктором типа, но вместо того, чтобы матч шаблон что-то вроде следующего:
f (PartialOrder xs le) = ...
Где le
является функция неявно определяющая явный порядок, определенный в конструктор значений. Я знаю, что такое средство доступно в Scala, есть ли способ сделать то же самое в Haskell?
Заранее спасибо.
Ударьте меня секундами! –
@ChrisTaylor: Хорошее старомодное «самое быстрое оружие в западной проблеме»: P. –
Новое расширение PatternSynonyms предоставит вам то, что вы хотите, но пока не совсем доступно. – augustss