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