summaryrefslogtreecommitdiff
path: root/app/Builtins.hs
diff options
context:
space:
mode:
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