From a17bdba8ce340dbb346e01aaf4468618e9183dbd Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Mon, 29 Jul 2024 08:42:23 +0300 Subject: [PATCH] wip --- hbs2-cli/lib/HBS2/CLI/Run/Internal.hs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/hbs2-cli/lib/HBS2/CLI/Run/Internal.hs b/hbs2-cli/lib/HBS2/CLI/Run/Internal.hs index e425b12e..8d972f89 100644 --- a/hbs2-cli/lib/HBS2/CLI/Run/Internal.hs +++ b/hbs2-cli/lib/HBS2/CLI/Run/Internal.hs @@ -136,6 +136,7 @@ pattern Lambda a e <- ListVal [SymbolVal "lambda", LambdaArgs a, e] pattern LambdaArgs :: [Id] -> Syntax c pattern LambdaArgs a <- (lambdaArgList -> Just a) + lambdaArgList :: Syntax c -> Maybe [Id] lambdaArgList (ListVal a) = sequence argz @@ -341,13 +342,13 @@ eval syn = handle (handleForm syn) $ do ListVal [ SymbolVal "quot", ListVal b] -> do pure $ mkList b - ListVal [SymbolVal "lambda", arglist, body] -> do - pure $ mkForm @c "lambda" [ arglist, body ] - ListVal [SymbolVal "define", SymbolVal what, e] -> do ev <- eval e bind what ev>> pure nil + ListVal [SymbolVal "lambda", arglist, body] -> do + pure $ mkForm @c "lambda" [ arglist, body ] + ListVal [SymbolVal "define", LambdaArgs (name : args), e] -> do bind name ( mkForm @c "lambda" [ mkList [ mkSym s | s <- args], e ] ) pure nil @@ -461,12 +462,6 @@ internalEntries = do let wat = [ mkList @c [mkSym i, e] | (i,e) <- optlist syn ] pure $ mkForm "dict" wat - entry $ bindMatch "lambda" $ \case - [a, b] -> do - pure $ mkForm "lamba" [ mkSym "_", mkSym "..." ] - - _ -> error "SHIT" - entry $ bindMatch "map" $ \syn -> do case syn of [ListVal (SymbolVal "lambda" : SymbolVal fn : _), ListVal rs] -> do