On Mon, Oct 3, 2016 at 8:51 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> Robert Haas <robertmh...@gmail.com> writes:
>> Why do you keep insisting on changing case where I've written "which"
>> to instead say "that" in situations where AFAIK either is perfectly
>> correct?  I find such changes at best neutral, and in some cases
>> worse.
> What I was taught in school was that "that" introduces a restrictive
> clause, i.e. one that limits the membership of whatever group was
> just mentioned, while "which" introduces a descriptive clause, i.e.
> one that just provides more information about the group.  So for
> example
>         Functions that return a pass-by-reference type must do X.
> is correct, while
>         Functions, which return a pass-by-reference type, must do X.
> carries an implication that *all* functions in the system return
> pass-by-reference types.  Even if you think that that's obviously
> silly, it may confuse readers who are accustomed to this distinction
> being drawn.  On the other hand, this is fine:
>         Functions that return text, which is a pass-by-reference type,
>         must do X.
> I've made the point more obvious in the above by setting off descriptive
> clauses with commas, which is a common thing to do.  But the punctuation
> is optional.
> I realize that this is nitpickery, and wouldn't usually bother about
> the distinction in, say, code comments. But we are striving to be
> somewhat formal in the user-facing documentation, no?

Sure, I'm not arguing with trying to be formal.  The grammatical rule
that you're describing doesn't exist for me, though.  I believe that
"that" can only introduce a restrictive clause, whereas "which" can
introduce either a descriptive or a restrictive clause.  It's
impossible for to imagine someone reading "functions which return text
must do X" and coming away with the conclusion that all functions
return text.

The reason I tend to prefer "which" is that "that" can mean lots of
other things, too.  Consider:

Donald Trump takes advantage of tax loopholes.  The tax loopholes that
that man uses should be eliminated.
Donald Trump takes advantage of tax loopholes.  The tax loopholes
which that man uses should be eliminated.

In my opinion, the second one is considerably superior.  If "which"
can only introduce a descriptive clause, then what does the second one
mean?  The sentence must now be construed to mean that some
unspecified set of tax loopholes should be eliminated.  We know that
each of them are used by Donald Trump, but not that they include every
loophole used by Donald Trump.  Of course, nobody would read the
sentence that way: it is drop-dead obvious that "which that man uses"
is intended to define the set of tax loopholes, not to describe it.  I
certainly used such constructions many times in the papers I wrote in
college, which I think also qualify as formal writing, and I don't
think I got dinged for doing so.

I tend to find the construction involving "which" to lead to easier
reading, because there's no ambiguity about it. Note that this is
perfectly fine:

The tax loopholes Donald Trump uses should be eliminated.

I don't know what that's called from the standpoint of formal grammar,
but it's clear enough.  So presumably I can also replace "Donald
Trump" with "that man":

The tax loopholes that man uses should be eliminated.

Well, now when I get to the word "that", my brain freezes up for a
second: is this introducing a clause beginning with "that", or is
introducing a clause beginning with nothing with "that" as the first
word of the clause?  I can't tell until I keep reading, and I might
have to backup and reread to be sure I'm understanding the meaning
correctly.  In contrast, if the clause had been introduced with
"which", it would have been clear immediately, which is a desirable
property for documentation to have.

I apologize for writing an email that mentions "Donald Trump" no less
than 7 times.  Sorry.

Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to