4 ms·
How about eat = lambda chars: lambda s: s[1:] if s and s[0] in chars else None alt = lambda p, q: lambda s: (lambda r: q(s) if r is None else r)(p(s))
by abecedarius 15y ago
How about
eat = lambda chars: lambda s: s[1:] if s and s[0] in chars else None
alt = lambda p, q: lambda s: (lambda r: q(s) if r is None else r)(p(s))
seq = lambda p, q: lambda s: (lambda r: None if r is None else q(r))(p(s))
going a bit far in the short-names direction, oh well. :) It's too bad Python has this artificial statement/expression distinction.