Dev #6

Merged
msydneyslaga merged 7 commits from dev into main 2023-12-14 13:43:21 -07:00
Showing only changes of commit 906bdc59b7 - Show all commits

View File

@@ -703,9 +703,14 @@ buildInitialHeap (Program ss) = mapAccumL allocateSc mempty compiledScs
-- special cases for prim functions; essentially inlining
compileE g ("negate#" :$ a) = compileE g a <> [Neg]
compileE g ("+#" :$ a :$ b) = compileE g a <> compileE g b <> [Add]
compileE g ("-#" :$ a :$ b) = compileE g a <> compileE g b <> [Sub]
-- note that we only bother offsetting the environment and evaluationg
-- in the "correct" order with non-commutative operations. if we
-- implemented Sub the same way as Add, (-#) 3 2 would evaluate to -1.
compileE g ("-#" :$ a :$ b) = compileE g b <> compileE g' a <> [Sub]
where g' = argOffset 1 g
compileE g ("*#" :$ a :$ b) = compileE g a <> compileE g b <> [Mul]
compileE g ("/#" :$ a :$ b) = compileE g a <> compileE g b <> [Div]
compileE g ("/#" :$ a :$ b) = compileE g a <> compileE g' b <> [Div]
where g' = argOffset 1 g
compileE g ("==#" :$ a :$ b) = compileE g a <> compileE g b <> [Equals]
compileE g (Case e as) = compileE g e <> [CaseJump (compileD g as)]