other arith

This commit is contained in:
crumbtoo
2023-11-13 21:55:18 -07:00
parent 6f19d112e3
commit bc1a62120c
2 changed files with 15 additions and 0 deletions

View File

@@ -78,6 +78,9 @@ primitives :: [(Name, Prim)]
primitives =
[ ("negate#", IntNegP)
, ("+#", IntAddP)
, ("-#", IntSubP)
, ("*#", IntMulP)
, ("/#", IntDivP)
]
instantiate :: Expr -> TiHeap -> [(Name, Addr)] -> (TiHeap, Addr)
@@ -230,6 +233,9 @@ step st =
arg = hLookupUnsafe argAddr h
primStep _ IntAddP st = primBinOp (+) st
primStep _ IntSubP st = primBinOp (-) st
primStep _ IntMulP st = primBinOp (*) st
primStep _ IntDivP st = primBinOp (div) st
primBinOp :: (Int -> Int -> Int) -> TiState -> TiState
primBinOp f (TiState s d h g sts) =
@@ -356,6 +362,12 @@ negExample3 = Program
"twice" :$ Prim IntNegP :$ Prim (IntP 3)
]
arithExample1 :: Program
arithExample1 = Program
[ ScDef "main" [] $
"+#" :$ (Prim $ IntP 3) :$ ("negate#" :$ (Prim $ IntP 2))
]
----------------------------------------------------------------------------------
instance Pretty TiState where