I think he's actually quite clear on rejecting it as a <i>syntax error</i>. Ruby isn't doing it right in that it throws a <i>type error</i>: 1 &#60; 2 &#60; 3 becomes lt(lt(1, 2), 3), then lt(true, 3) which doesn't check.<p>I know nothing about Ruby so I don't know how its operator overloading works, but I think that could be a problem if &#60; was redefined with an a -&#62; a -&#62; a signature, or a -&#62; a -&#62; b with b comparable to a, since in this case you wouldn't get the type error. The proper solution, according to the author, would probably be to simply refuse any expression with more than one &#60; (or any other non-associative operator).