From: (Casper H.S. Dik)
Subject: Re: Csh Programming Considered Harmful
Date: Wed Oct 12 16:24 MDT 1994

The many C-shells will interpret
"if( ..." different from "if (" depending on whether the if is in a branch
of an if that's being taken or an untaken branch.  The C-shell uses two
*different* parsers.

The point is *not* whether the C-shell accepts "if(" or not.

What does the following echo in *your* C-shell?

unset foo bar
if ( $?foo  ) then
    if( $?bar) then >& /dev/null
        echo bar and foo
        echo not bar and foo
    echo not foo

Obviously, the *right* answer is not foo.
[ ( $?foo ) checks if set and returns false ]

You'll also notice that the redirection at the end of the then line
is perfectly acceptable to the C-shell at the top level (it throws
away all output of the if-expression).

The point is that the C-shell doesn't *parse* it's input,
it adhoculates it.