temporary commit incase of breakage

This commit is contained in:
sebastianselander 2023-03-28 17:13:51 +02:00
parent 91d6332dc5
commit 8910d8adc0
6 changed files with 118 additions and 45 deletions

32
src/Desugar/Desugar.hs Normal file
View file

@ -0,0 +1,32 @@
{-# LANGUAGE LambdaCase #-}
module Desugar.Desugar where
import Data.Function (on)
import Grammar.Abs
desugar :: Program -> Program
desugar (Program defs) = Program (map desugarDef defs)
desugarDef :: Def -> Def
desugarDef = \case
DBind b -> DBind (desugarBind b)
DSig sig -> DSig sig
DData d -> DData d
desugarBind :: Bind -> Bind
desugarBind (Bind name args e) = Bind name args (desugarExp e)
desugarExp :: Exp -> Exp
desugarExp = \case
EAppInf e2 e1 -> (EApp `on` desugarExp) e1 e2
EApp e1 e2 -> (EApp `on` desugarExp) e1 e2
EAdd e1 e2 -> (EAdd `on` desugarExp) e1 e2
EAbs i e -> EAbs i (desugarExp e)
ELet b e -> ELet (desugarBind b) (desugarExp e)
ECase e br -> ECase (desugarExp e) (map desugarBranch br)
EAnn e t -> EAnn (desugarExp e) t
e -> e
desugarBranch :: Branch -> Branch
desugarBranch (Branch p e) = Branch p (desugarExp e)