import Ostap; import List; import Fun; fun many (a) { memo ( eta ( empty @ lift({}) | many (a) |> fun (as) {a @ fun (x) {as +++ {x}}} ) ) } var a = token ("a"), b = token ("b"); var bad_alter = a | a |> fun (x) {b @ fun (y) {x ++ y}}; --logOn (); printf ("Parsing ""aaa"" with many ... %s\n", parseString (many (a) |> bypass (eof), "aaa").string); printf ("Parsing ""ab"" with bad_alter ... %s\n", parseString (bad_alter |> bypass (eof), "ab").string)