aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux.lux
diff options
context:
space:
mode:
authorEduardo Julian2021-09-08 23:14:59 -0400
committerEduardo Julian2021-09-08 23:14:59 -0400
commit085c9a6ef151531cb01b842ed2f4366a49b78367 (patch)
tree01d5671061f1c688fe74319196f8da0e8aa95e4c /stdlib/source/library/lux.lux
parent54ab659064990ff37a9234c9792102a3b88277d6 (diff)
De-bracing | part 2
Diffstat (limited to 'stdlib/source/library/lux.lux')
-rw-r--r--stdlib/source/library/lux.lux27
1 files changed, 23 insertions, 4 deletions
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))))))