 M: only-first-parser parse ( input parser -- list )
     #! Transform a parser into a parser that only yields
     #! the first possibility.
-    only-first-parser-p1 parse 1 swap ltake ;
+    p1>> parse 1 swap ltake ;
 
 LAZY: <!*> ( parser -- parser )
     #! Like <*> but only return one possible result

    #! two parsers. First parser1 is applied to the
    #! input then parser2 is applied to the rest of
    #! the input strings from the first parser.
    and-parser-parsers unclip swapd parse
    [ [ and-parser-parse ] reduce ] 2curry promise ;

TUPLE: or-parser parsers ;

    #! The result of that quotation then becomes the new parse result.
    #! This allows modification of parse tree results (like
    #! converting strings to integers, etc).
    [ p1>> ] [ quot>> ] bi
    -rot parse [
        [ parsed>> swap call ] keep
        unparsed>> <parse-result>
    ] lazy-map-with ;

TUPLE: some-parser p1 ;
