= OpSum | OpMult | ...
и думаю: нельзя ли как-то сделать так, чтобы писать не OpSum, OpMult, а Op "+", Op "-" или что-то подобное? Понятно, что можно завести
data Op = Op String
но тогда потеряется возможность чётко отслеживать, что операции только такие в паттерн-матчинге.
То есть хочется выделить какой-то набор строк, чтобы только он был валидным и зафиксировать это в типе.
data BinOp = (:+) | (:*) data Expr = I | Op Expr BinOp Expr f = Op I (:+) I
О, действительно! Хотя уже и не уверен, что оно мне надо...
Обсуждают сегодня