From 6942ffa61fe93dc6872f97d1a0b7683614e8c7e4 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Thu, 15 Feb 2024 22:08:04 -0500 Subject: Properly alpha rename when typechecking Also, allow quotations in literals (e.g. arrays) --- fig-bless/src/Fig/Bless/Runtime.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'fig-bless/src/Fig/Bless/Runtime.hs') 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 -- cgit v1.2.3