ren-lang / compiler / Ren.Compiler.Desugar


type alias Transformation meta =
meta -> Ren.AST.Expr.ExprF (Ren.AST.Expr.Expr meta) -> Ren.AST.Expr.ExprF (Ren.AST.Expr.Expr meta)

A transformation is any function that takes both the metadata and expression node in the AST and returns a new AST node.

run : List (Transformation meta) -> Ren.AST.Module.Declaration meta -> Ren.AST.Module.Declaration meta

defaults : List (Transformation meta)

placeholders : meta -> Ren.AST.Expr.ExprF (Ren.AST.Expr.Expr meta) -> Ren.AST.Expr.ExprF (Ren.AST.Expr.Expr meta)

Ren allows certain expressions to include placeholder bindings: _. These bindings get transformed into lambdas and allow us a simple way to achieve positional piping, partial operator application, and more.

blocks : meta -> Ren.AST.Expr.ExprF (Ren.AST.Expr.Expr meta) -> Ren.AST.Expr.ExprF (Ren.AST.Expr.Expr meta)

patterns : meta -> Ren.AST.Expr.ExprF (Ren.AST.Expr.Expr meta) -> Ren.AST.Expr.ExprF (Ren.AST.Expr.Expr meta)