I'm confused about the behavior of 'not'. The Pickaxe and Ruby21Days books suggests that 'not' is just another form of '!', yet, while this works: puts ! true # prints false this breaks: puts not true # parse error Similarly, 'and' and '&&' are presented as synonymous, but don't always behave the same: puts true and (! true) # prints true puts true && (! true) # prints false Can someone enlighten me? How, and where, are these implemented? Why the difference in behavior? Is puts true and (!true) intertpreted as (puts true) and (!true) I tried this puts (true and (!true) ) and got a parse error, but puts (true && (!true) ) works fine. Thanks, James