summaryrefslogtreecommitdiff
path: root/fig-bless/src/Fig/Bless/Runtime.hs
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2024-02-15 22:08:04 -0500
committerLLLL Colonq <llll@colonq>2024-02-15 22:08:04 -0500
commit6942ffa61fe93dc6872f97d1a0b7683614e8c7e4 (patch)
treebc78bbef3b6c141ebc198f13aca7ff858f0309f7 /fig-bless/src/Fig/Bless/Runtime.hs
parent4cd98d6c22a92051c8375da8954cf1cdc63678d8 (diff)
Properly alpha rename when typechecking
Also, allow quotations in literals (e.g. arrays)
Diffstat (limited to 'fig-bless/src/Fig/Bless/Runtime.hs')
-rw-r--r--fig-bless/src/Fig/Bless/Runtime.hs4
1 files changed, 2 insertions, 2 deletions
diff --git a/fig-bless/src/Fig/Bless/Runtime.hs b/fig-bless/src/Fig/Bless/Runtime.hs
index c1170f3..4de75e0 100644
--- a/fig-bless/src/Fig/Bless/Runtime.hs
+++ b/fig-bless/src/Fig/Bless/Runtime.hs
@@ -153,15 +153,15 @@ runWord _ w vm | Just (b, _) <- Map.lookup w $ vm.builtins ?term = b vm
runWord f w vm | Just p <- lookup w vm.bindings.defs = runProgram f p vm
runWord _ w _ = throwM $ RuntimeErrorWordNotFound ?term w
-literalValue :: Syn.Literal -> ValueF t
+literalValue :: Syn.LiteralF t -> ValueF t
literalValue (Syn.LiteralInteger i) = ValueInteger i
literalValue (Syn.LiteralDouble i) = ValueDouble i
literalValue (Syn.LiteralString i) = ValueString i
literalValue (Syn.LiteralArray xs) = ValueArray $ literalValue <$> xs
+literalValue (Syn.LiteralQuote p) = ValueProgram p
run :: Running m t => Syn.Extractor m t -> t -> VM m t -> m (VM m t)
run f v vm =
let ?term = Just v in f v >>= \case
Syn.TermLiteral l -> push (literalValue l) <$> checkFuel vm
- Syn.TermQuote p -> push (ValueProgram p) <$> checkFuel vm
Syn.TermWord w -> runWord f w =<< checkFuel vm