summaryrefslogtreecommitdiff
path: root/src/Interpreter.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Interpreter.hs')
-rw-r--r--src/Interpreter.hs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/Interpreter.hs b/src/Interpreter.hs
index 01d15f1..316a423 100644
--- a/src/Interpreter.hs
+++ b/src/Interpreter.hs
@@ -14,8 +14,8 @@
{-# LANGUAGE TypeOperators #-}
module Interpreter (
interpret,
- interpret',
- Value,
+ interpretOpen,
+ Value(..),
) where
import Control.Monad (foldM, join)
@@ -39,10 +39,13 @@ runAcM :: (forall s. AcM s a) -> a
runAcM (AcM m) = unsafePerformIO m
interpret :: Ex '[] t -> Rep t
-interpret e = runAcM (interpret' SNil e)
+interpret = interpretOpen SNil
newtype Value t = Value (Rep t)
+interpretOpen :: SList Value env -> Ex env t -> Rep t
+interpretOpen env e = runAcM (interpret' env e)
+
interpret' :: forall env t s. SList Value env -> Ex env t -> AcM s (Rep t)
interpret' env = \case
EVar _ _ i -> case slistIdx env i of Value x -> return x