diff options
Diffstat (limited to 'devel/compiler/TMacros.hs')
| -rw-r--r-- | devel/compiler/TMacros.hs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/devel/compiler/TMacros.hs b/devel/compiler/TMacros.hs new file mode 100644 index 000000000..467b6ce4f --- /dev/null +++ b/devel/compiler/TMacros.hs @@ -0,0 +1,16 @@ +module TMacros where + +import AbsTgt + +appVal :: Val -> [Val] -> Val +appVal v vs = compVal vs v + +compVal :: [Val] -> Val -> Val +compVal args = comp where + comp val = case val of + VRec vs -> VRec $ map comp vs + VPro r p -> case (comp r, comp p) of + (VRec vs, VPar i) -> vs !! fromInteger i + VArg i -> args !! fromInteger i + VCat x y -> VCat (comp x) (comp y) + _ -> val |
