summaryrefslogtreecommitdiff
path: root/app/Builtins.hs
diff options
context:
space:
mode:
authorMirek Kratochvil <exa.exa@gmail.com>2022-11-15 20:30:53 +0100
committerMirek Kratochvil <exa.exa@gmail.com>2022-11-15 20:30:53 +0100
commite074e454d5f8b5bc5dc45dccab1d138c5cd4ab0c (patch)
tree3d12a566190bdcfa1672a5a5bf69bcc79259b50c /app/Builtins.hs
parent8d5353dc8c7ef3eefb0ae4860e67602c455c1a58 (diff)
downloadprlg-e074e454d5f8b5bc5dc45dccab1d138c5cd4ab0c.tar.gz
prlg-e074e454d5f8b5bc5dc45dccab1d138c5cd4ab0c.tar.bz2
ok simplify the refs back
Diffstat (limited to 'app/Builtins.hs')
-rw-r--r--app/Builtins.hs24
1 files changed, 15 insertions, 9 deletions
diff --git a/app/Builtins.hs b/app/Builtins.hs
index 9e4215c..53ebe82 100644
--- a/app/Builtins.hs
+++ b/app/Builtins.hs
@@ -10,10 +10,14 @@ import qualified Operators as O
bi = Builtin
-hello =
- bi $ do
- liftIO $ putStrLn "hllo prlg"
- return Nothing
+hello :: BuiltinFn
+hello = do
+ liftIO $ putStrLn "hllo prlg"
+ return Nothing
+
+printLocals :: BuiltinFn
+printLocals = do
+ return Nothing
addBuiltins :: PrlgEnv ()
addBuiltins = do
@@ -21,28 +25,30 @@ addBuiltins = do
a <- findAtom "a"
b <- findAtom "b"
c <- findAtom "c"
+ varX <- findAtom "X"
b0 <- findStruct "b" 0
any1 <- findStruct "any" 1
eq2 <- findStruct "=" 2
hello0 <- findStruct "hello" 0
fail0 <- findStruct "fail" 0
true0 <- findStruct "true" 0
- prlgstate0 <- findStruct "prlgstate" 0
+ printlocals0 <- findStruct "print_locals" 0
+ debugprint0 <- findStruct "interpreter_state" 0
modify $ \s ->
s
{ defs =
M.fromList
- [ (eq2, [[U (LocalRef 0 Nothing), U (LocalRef 0 Nothing), NoGoal]])
+ [ (eq2, [[U (LocalRef 0 varX), U (LocalRef 0 varX), 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]
])
- , (any1, [[U (VoidRef Nothing), NoGoal]])
- , (hello0, [[Invoke hello]])
+ , (any1, [[U VoidRef, NoGoal]])
+ , (hello0, [[Invoke $ bi hello]])
, (fail0, [[Invoke $ bi backtrack]])
, (true0, [[Invoke $ bi (pure Nothing)]])
- , ( prlgstate0
+ , ( debugprint0
, [[Invoke $ bi (get >>= liftIO . print >> pure Nothing)]])
]
, ops = [(O.xfy "," 1000), (O.xfx "=" 700)]