From 09a651362575302f5e670486bd57abbf7f37c901 Mon Sep 17 00:00:00 2001 From: voidlizard Date: Mon, 3 Mar 2025 19:22:40 +0300 Subject: [PATCH] bf6 cond --- .../Data/Config/Suckless/Script/Internal.hs | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Script/Internal.hs b/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Script/Internal.hs index 6dce1e16..2acd91db 100644 --- a/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Script/Internal.hs +++ b/miscellaneous/suckless-conf/lib/Data/Config/Suckless/Script/Internal.hs @@ -795,9 +795,28 @@ eval' dict0 syn' = handle (handleForm syn') $ do e@(ListVal (SymbolVal "blob" : what)) -> do pure e + r@(ListVal (SymbolVal "cond" : clauses)) -> do + + flip fix clauses $ \next -> \case + + (ListVal [SymbolVal "_", e1] : _) -> do + eval e1 + + (ListVal [p', e1] : rest) -> do + + p <- eval p' + + if isFalse p then + next rest + else do + eval e1 + + (_ : _) -> throwIO (BadFormException r) + + [] -> pure nil + r@(ListVal (SymbolVal "match" : e' : clauses)) -> do e <- eval e' - -- $ show $ "MATCH" <+> pretty e <+> pretty clauses flip fix clauses $ \next -> \case