> 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

puts (!true)
puts (not true)

What's currently happening with the 'not true' rule is the same as:

(puts not) true

! and not are the same in function, but not in operator precedence.
not was binding to puts while ! binds to true.  <:~) The same applies
to 'and' and '&&'.

> 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) )

That seems like a bug...

-sc

-- 
Sean Chittenden