wip, evaluation, broken

This commit is contained in:
voidlizard 2025-01-24 15:29:29 +03:00
parent 816786fd5b
commit dae0aa191a
1 changed files with 7 additions and 5 deletions

View File

@ -530,7 +530,9 @@ apply name args' = do
what <- ask >>= readTVarIO <&> HM.lookup name what <- ask >>= readTVarIO <&> HM.lookup name
case bindAction <$> what of case bindAction <$> what of
Just (BindLambda e) -> mapM eval args' >>= e Just (BindLambda e) -> do
liftIO $ print $ show $ pretty "APPLY!" <+> pretty name <+> pretty args'
mapM eval args' >>= e
Just (BindValue (Lambda argz body) ) -> do Just (BindValue (Lambda argz body) ) -> do
applyLambda argz body args' applyLambda argz body args'
@ -643,8 +645,8 @@ eval' dict0 syn = handle (handleForm syn) $ do
ListVal [ SymbolVal "quasiquot", ListVal b] -> do ListVal [ SymbolVal "quasiquot", ListVal b] -> do
mkList <$> mapM (evalQQ dict) b mkList <$> mapM (evalQQ dict) b
ListVal [ SymbolVal "quot", ListVal b] -> do ListVal [ SymbolVal "quot", b] -> do
pure $ mkList b pure b
ListVal [ SymbolVal "eval", e ] -> eval e >>= eval ListVal [ SymbolVal "eval", e ] -> eval e >>= eval
@ -1311,10 +1313,10 @@ internalEntries = do
brief "calls external process" brief "calls external process"
$ entry $ bindMatch "call:proc" \case $ entry $ bindMatch "call:proc" \case
[StringLike what] -> lift do [StringLike what] -> lift do
callProc what mempty mempty <&> mkList @c . fmap (fixList . fixContext) callProc what mempty mempty <&> mkList @c . fmap (fixContext)
StringLikeList (x:xs) -> lift do StringLikeList (x:xs) -> lift do
callProc x xs mempty <&> mkList @c . fmap (fixList . fixContext) callProc x xs mempty <&> mkList @c . fmap (fixContext)
_ -> throwIO (BadFormException @c nil) _ -> throwIO (BadFormException @c nil)