The a & b operator requires a lot of magic to work and some things are strictly impossible to detect (e.g. (a & b) & c is length 3 instead of length 2, while x = a & b; x & c is length 2). There should at least be the option to parse a sequence of tokens without using the magic operator, just like longest exists as an alternative to a | b.