From 98c40f4bf8849f5cdd3d3c49123bc911b8fa42e1 Mon Sep 17 00:00:00 2001 From: Mirek Kratochvil Date: Sun, 5 Mar 2023 21:34:20 +0100 Subject: strings and a few other small nice changes --- app/Interpreter.hs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'app/Interpreter.hs') diff --git a/app/Interpreter.hs b/app/Interpreter.hs index 2ad0118..440b6fa 100644 --- a/app/Interpreter.hs +++ b/app/Interpreter.hs @@ -8,6 +8,7 @@ import Code , Cho(..) , Code , Datum(..) + , Id(..) , Instr(..) , InterpFn , emptyHeap @@ -18,7 +19,7 @@ import Control.Monad (when) import qualified Data.Map as M import Env (PrlgEnv) import Heap -import IR (Id(..), StrTable(..)) +import IR (StrTable(..)) import Lens.Micro import Lens.Micro.Mtl @@ -145,7 +146,7 @@ cutHead = do cutGoal = doCut >> advance -openGoal :: IR.Id -> InterpFn +openGoal :: Id -> InterpFn openGoal fn = do def <- (M.!? fn) <$> use defs case def of @@ -244,13 +245,10 @@ uOK = uNext >> continue unify :: Datum -> Datum -> InterpFn unify VoidRef VoidRef = uOK -unify (Atom _) VoidRef = uOK -unify VoidRef (Atom _) = uOK -unify (Atom a) (Atom b) +unify (C _) VoidRef = uOK +unify VoidRef (C _) = uOK +unify (C a) (C b) | a == b = uOK -unify (Number _) VoidRef = uOK -unify VoidRef (Number _) = uOK -unify (Number a) (Number b) | a == b = uOK unify (Struct a) VoidRef = do uNext -- cgit v1.2.3