{-# LANGUAGE OverloadedStrings #-} module Compiler where import Data.Text import qualified Arith as A import DSL import Language.REST.MetaTerm import Language.REST.Op import qualified Data.HashSet as S import Prelude hiding (repeat, seq) repeat n op = RWApp (Op "repeat") [n, op] seq op1 op2 = RWApp (Op "seq") [op1, op2] nop = RWApp (Op "nop") [] userRWs = S.union A.userRWs (S.fromList $ [ seq x nop ~> x , seq nop x ~> x , repeat zero' x ~> nop ] ++ (repeat (suc' y) x <~> seq x (repeat y x)) -- ++ (repeat (suc' y) x <~> seq (repeat y x) x) ++ (repeat (suc' (suc' zero')) x <~> seq x x)) evalRWs = S.empty -- S.fromList [ ]