Re:Regular Expression Engine in 14 lines of Python
by 127 on Sunday November 06, 2011 @04:24PM
(#3203888)
Yes, that is a bug and yes, those variable names do suck. Thanks for the correction.
ordered_choice = lambda va,vb: lambda inp: (lambda a,b: a if a or a=="" else b)(va(inp),vb(inp))
Would work, but starts to be so ugly that I'd have to write proper functions and the code would not be 3 lines anymore. ;)
Re:Regular Expression Engine in 14 lines of Python
by abecedarius on Sunday November 06, 2011 @06:30PM
(#3204257)
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.
Also I think c seems misleading as a variable name -- it suggests a single character, but the 'in c' means it's a set of characters.