aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/macro/syntax/input.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/library/lux/macro/syntax/input.lux')
-rw-r--r--stdlib/source/library/lux/macro/syntax/input.lux29
1 files changed, 17 insertions, 12 deletions
diff --git a/stdlib/source/library/lux/macro/syntax/input.lux b/stdlib/source/library/lux/macro/syntax/input.lux
index b7ff83a59..51aa4b5fe 100644
--- a/stdlib/source/library/lux/macro/syntax/input.lux
+++ b/stdlib/source/library/lux/macro/syntax/input.lux
@@ -7,7 +7,9 @@
["<>" parser
["<[0]>" code {"+" [Parser]}]]]
[data
- ["[0]" product]]
+ ["[0]" product]
+ [collection
+ ["[0]" list ("[1]\[0]" monad)]]]
[macro
["[0]" code]]]])
@@ -23,16 +25,19 @@
code.equivalence
))
-(def: .public (format value)
- (-> Input Code)
- (code.record
- (list [(value@ #binding value)
- (value@ #type value)])))
+(def: .public format
+ (-> (List Input) Code)
+ (|>> (list\each (function (_ value)
+ (list (value@ #binding value)
+ (value@ #type value))))
+ list\conjoint
+ code.tuple))
(def: .public parser
- (Parser Input)
- (<code>.record
- ($_ <>.and
- <code>.any
- <code>.any
- )))
+ (Parser (List Input))
+ (<| <code>.tuple
+ <>.some
+ ($_ <>.and
+ <code>.any
+ <code>.any
+ )))