diff options
Diffstat (limited to 'app/Builtins.hs')
| -rw-r--r-- | app/Builtins.hs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/Builtins.hs b/app/Builtins.hs new file mode 100644 index 0000000..272eca2 --- /dev/null +++ b/app/Builtins.hs @@ -0,0 +1,31 @@ +module Builtins where + +import Code hiding (defs) +import Control.Monad.Trans.State.Lazy +import qualified Data.Map as M +import Env +import qualified Operators as O + +addBuiltins :: PrlgEnv () +addBuiltins = do + a1 <- findStruct "a" 1 + a <- findAtom "a" + b <- findAtom "b" + c <- findAtom "c" + b0 <- findStruct "b" 0 + any <- findStruct "any" 1 + eq <- findStruct "=" 2 + modify $ \s -> + s + { defs = + M.fromList + [ (eq, [[U (LocalRef 0), U (LocalRef 0), NoGoal]]) + , (a1, [[U (Atom a), NoGoal], [U (Atom b), NoGoal]]) + , ( b0 + , [ [Goal, U (Struct a1), U (Atom c), LastCall] + , [Goal, U (Struct a1), U (Atom b), LastCall] + ]) + , (any, [[U VoidRef, NoGoal]]) + ] + , ops = [(O.xfy "," 1000), (O.xfx "=" 700)] + } |
