(;module: lux (lux (data [text] (text format ["l" lexer "l/" Monad]) [char] (coll [list "L/" Functor])))) (type: #export Signal Text) (do-template [ ] [(def: #export Signal (|> char;char char;as-text))] [cons-signal +5] [nil-signal +6] [stop-signal +7] ) (do-template [ ] [(def: #export Signal )] [ident-separator ";"] ) (def: #export (encode-list encode-elem types) (All [a] (-> (-> a Text) (List a) Text)) (format (|> (L/map encode-elem types) (text;join-with cons-signal)) nil-signal)) (def: #export (decode-list decode-elem) (All [a] (-> (l;Lexer a) (l;Lexer (List a)))) (l;alt (<| (l;after (l;text nil-signal)) (l/wrap [])) (<| (l;seq decode-elem) (l;after (l;text cons-signal)) (decode-list decode-elem))))