Consider this predicate on strings. define(eq,`define(`_$1',F)define(`_2',T)_$1')
eq(x,y) yields T or F according as strings x and y are the same or different. (The strings may contain only characters allowed in macro names). The puzzle: If you omit inner quotes from the definition, eq(A,A) yields T as intended. But what happens when you repeat the test? (Incidentally, you can replace T by `$3' and F by `$4' to make a near replacement for the builtin ifelse.)
