[add support for interpreting C operators
John Meacham <john@repetae.net>**20051108111515] hunk ./Grin/Grin.hs 16
-    tagApply,
hunk ./Grin/Grin.hs 73
-tagApply = toAtom "Bap"
hunk ./Grin/Grin.hs 360
---findArgsType _ a | a == tagApply = return ([TyPtr TyNode,TyPtr TyNode],TyNode)
hunk ./Grin/Interpret.hs 70
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "<=" } _, primType = (_,t)} [x,y]) = if x' <= y' then return (Lit 1 t) else return (Lit 0 t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = ">=" } _, primType = (_,t)} [x,y]) = if x' >= y' then return (Lit 1 t) else return (Lit 0 t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = ">" } _, primType = (_,t)} [x,y]) = if x' > y' then return (Lit 1 t) else return (Lit 0 t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "<" } _, primType = (_,t)} [x,y]) = if x' < y' then return (Lit 1 t) else return (Lit 0 t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "==" } _, primType = (_,t)} [x,y]) = if x' == y' then return (Lit 1 t) else return (Lit 0 t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "+" } _, primType = (_,t)} [x,y]) = return (Lit (x' + y') t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "/" } _, primType = (_,t)} [x,y]) = return (Lit (x' `div` y') t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "%" } _, primType = (_,t)} [x,y]) = return (Lit (x' `mod` y') t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "-" } _, primType = (_,t)} [x,y]) = return (Lit (x' - y') t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "*" } _, primType = (_,t)} [x,y]) = return (Lit (x' * y') t)
+        where (Lit x' _) = le env x
+              (Lit y' _) = le env y
+    f env (Prim Primitive { primAPrim = APrim Operator { primOp = "-" } _, primType = (_,t)} [x]) = return (Lit (negate x') t)
+        where (Lit x' _) = le env x
hunk ./Grin/Interpret.hs 152
-        Just x -> x
+        Just x -> le env x
hunk ./Grin/Interpret.hs 168
---        | t == tagApply = f mempty (Eval (xs !! 0) :>>= (n1, Apply n1 (xs !! 1)))
hunk ./Grin/Interpret.hs 175
---    bind (Var (V 0) _) _ = return mempty
+    bind (Var (V 0) _) _ = return mempty
hunk ./Grin/Interpret.hs 178
---    bind Unit Unit = return mempty