packages feed

HaRe-0.6: tools/interp/NewData.hs

type Name = String

data Op = Plus | Mult | IntEq | IntLess

data LS = Lazy | Strict

-- M Value
data E
  = Var Name
  | App E E
  | Abs P E
  | Let [D] E
  | Case E [(P,Body,[D])]
  | PairExp E E
  | TupleExp [E]
  | Const Integer
  | ConApp Name [E] -- ConApp Name [(E,Bool)]
  | NewApp Name E
  | Boom
  | Undefined
--- Above is the "core", below various extras
  | Bin Op E E
  | Cond E E E
  | Tconst 
  | Fconst

-- M(Maybe Value)
data Body = Guarded [(E,E)]
           | Normal E

-- M Value -> M(Maybe EnvFrag)
data P = Pconst Integer
       | Pvar Name
       | Ppair P P
       | Ptuple [P]
       | Pcondata Name [P]  
       | Pnewdata Name P
       | Ptilde P

-- M Value -> M Value  OR  EnvFrag
data D = 
   Fun Name [([P],Body,[D])]  -- each item in the list   M Value -> M(Maybe Value)
 | Val P Body [D]  -- EnvFrag