summaryrefslogtreecommitdiff
path: root/app/Builtins.hs
diff options
context:
space:
mode:
authorMirek Kratochvil <exa.exa@gmail.com>2023-02-26 18:10:10 +0100
committerMirek Kratochvil <exa.exa@gmail.com>2023-02-26 18:10:10 +0100
commit0d52bcf663ead766ae83c8f30f90beaea5790789 (patch)
tree7163b9365d4bafb9dfc70c2d50d1d3e1e1742232 /app/Builtins.hs
parent538dc0714afb48e399fb41342e943c7ff7feae65 (diff)
downloadprlg-0d52bcf663ead766ae83c8f30f90beaea5790789.tar.gz
prlg-0d52bcf663ead766ae83c8f30f90beaea5790789.tar.bz2
semicolon colons semi
Diffstat (limited to 'app/Builtins.hs')
-rw-r--r--app/Builtins.hs7
1 files changed, 5 insertions, 2 deletions
diff --git a/app/Builtins.hs b/app/Builtins.hs
index c63fb25..b38eaf0 100644
--- a/app/Builtins.hs
+++ b/app/Builtins.hs
@@ -104,12 +104,13 @@ assertRule addClause =
scope <- use (cur . hvar)
heap <- use (cur . heap)
comma <- findAtom ","
+ semi <- findAtom ";"
cut <- findAtom "!"
case Co.squashVars . IR.CallI 0 <$>
traverse (Co.heapStructPrlgInt Nothing heap) args of
Just (IR.CallI 0 [hs, gs]) ->
let (U (Struct s):cs) =
- Co.compileGoal hs ++ Co.seqGoals (Co.compileGoals comma cut gs)
+ Co.compileGoal hs ++ Co.compileGoals comma semi cut gs
in do addClause cs s
continue
_ -> prlgError "assert clause failure"
@@ -131,10 +132,11 @@ exec' fgol =
case Co.squashVars <$> Co.heapStructPrlgInt Nothing heap arg of
Just gs -> do
comma <- findAtom ","
+ semi <- findAtom ";"
cut <- findAtom "!"
zoom cur $ do
hvar .= M.empty
- hed .= Co.seqGoals (Co.compileGoals comma cut gs)
+ hed .= Co.compileGoals comma semi cut gs
gol %= fgol
continue
_ -> prlgError "bad goal"
@@ -356,6 +358,7 @@ addPrelude = do
addProc [[U (LocalRef 0), U (LocalRef 0), Done]] "=" 2
{- clauses -}
addOp $ O.xfy "," 1000
+ addOp $ O.xfy ";" 1100
addOp $ O.xfx ":-" 1200
addOp $ O.fx ":-" 1200
horn1 <- findStruct ":-" 1