 M: choice-parser (compile) ( parser -- quot )
   [ 
     f ,
-    parsers>> [ compiled-parser 1quotation , \ unless* , ] each
+    parsers>> [ compiled-parser ] map 
+    unclip 1quotation , \ unless* , [ 1quotation [ merge-errors ] compose , \ unless* , ] each
   ] [ ] make ;
 
 TUPLE: repeat0-parser p1 ;

    input set
    0 pos set
    f lrstack set
    <parse-error> errors set
    H{ } clone heads set
    H{ } clone packrat set
  ] H{ } make-assoc swap bind ; inline

M: seq-parser (compile) ( parser -- quot )
  [
    [ input-slice V{ } clone <parse-result> ] %
    parsers>> unclip compiled-parser 1quotation , \ parse-seq-element , [ 
      compiled-parser 1quotation [ merge-errors ] compose , \ parse-seq-element , ] each 
  ] [ ] make ;

TUPLE: choice-parser parsers ;
