diff -r e3c64f22dd31 -r 14914b57e207 progs/c.scala --- a/progs/c.scala Thu Apr 16 19:15:46 2020 +0100 +++ b/progs/c.scala Wed May 06 15:37:31 2020 +0100 @@ -18,6 +18,9 @@ for ((head, tail) <- parse(ts); if tail.isEmpty) yield head } + + + class SeqParser[I : IsSeq, T, S](p: => Parser[I, T], q: => Parser[I, S]) extends Parser[I, ~[T, S]] { def parse(sb: I) = for ((head1, tail1) <- p.parse(sb); @@ -67,7 +70,7 @@ implicit def ParserOps[I : IsSeq, T](p: Parser[I, T]) = new { def ||(q : => Parser[I, T]) = new AltParser[I, T](p, q) def ~[S](q : => Parser[I, S]) = new SeqParser[I, T, S](p, q) - def map[S](f: => T => S) = new MapParser[I, T, S](p, f) + def map[S](f: => T => S) = new MapParser[I, T, S](p, f) } // these implicits allow us to use infic notation for