def sep(p, s): return choice(attempt(sep1(p, s)), pack([]))
def many(p): return choice(attempt(many1(p)), pack([]))