3. TransformationΒΆ
transformation:
module desugar
imports signatures/-
strategies
desugar-calc = topdown(try(desugar))
rules
desugar : Min(e) -> Sub(Num("0"), e)
desugar : Neq(e1, e2) -> Not(Eq(e1, e2))
desugar : Gt(e1, e2) -> Lt(e2, e1)
desugar : Not(e) -> If(e, False(), True())
desugar : And(e1, e2) -> If(e1, e2, False())
desugar : Or(e1, e2) -> If(e1, True(), e2)
desugar : Fun([x | xs@[_|_]], e) -> Fun([x], Fun(xs, e))
desugar : Num(i) -> Num(j)
where <explode-string; filter(not(?44)); implode-string> i => j