packages feed

compdata-automata-0.9: benchmark/Functions/Comp.hs

module Functions.Comp where

import DataTypes.Comp

import Data.Comp
import Data.Comp.MacroAutomata

import Data.Map (Map)
import qualified Data.Map as Map


inlineTrans :: MacroTrans' Arith (Map Var) Arith
inlineTrans m (Var v) = case Map.lookup v m of
                          Nothing -> iVar v
                          Just e -> e
inlineTrans m (Let v x y) = y (Map.insert v (x m) m)
inlineTrans m f = Term $ fmap ($ m) f