From 085c9a6ef151531cb01b842ed2f4366a49b78367 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Wed, 8 Sep 2021 23:14:59 -0400 Subject: De-bracing | part 2 --- stdlib/source/library/lux.lux | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'stdlib/source/library/lux.lux') diff --git a/stdlib/source/library/lux.lux b/stdlib/source/library/lux.lux index d10f8d2f5..0872e57c1 100644 --- a/stdlib/source/library/lux.lux +++ b/stdlib/source/library/lux.lux @@ -4868,15 +4868,34 @@ (in_meta (list pick)) (target_pick target options' default))))) +(def: (pairs' tokens) + (-> (List Code) (Maybe (List [Code Code]))) + (if (|> tokens + list\size + (n/% 2) + ("lux i64 =" 0)) + (#Some (pairs tokens)) + #None)) + (macro: .public (for tokens) (do meta_monad [target ..target] (case tokens - (^ (list [_ (#Record options)])) - (target_pick target options #None) + (^ (list [_ (#Tuple options)])) + (case (pairs' options) + (#Some options) + (target_pick target options #None) + + #None + (failure (..wrong_syntax_error (name_of ..for)))) - (^ (list [_ (#Record options)] default)) - (target_pick target options (#Some default)) + (^ (list [_ (#Tuple options)] default)) + (case (pairs' options) + (#Some options) + (target_pick target options (#Some default)) + + #None + (failure (..wrong_syntax_error (name_of ..for)))) _ (failure (..wrong_syntax_error (name_of ..for)))))) -- cgit v1.2.3