08-278 To: J3 From: Michael Ingrassia Subject: Don Knuth and the Wicked Which Date: 2008 October 09 ---------------------------------------------------------------------- If we want Don Knuth to read the new standard with more pleasure, we will want to correct any instances of the "wicked which" in the document. See http://tex.loria.fr/typographie/mathwriting.pdf document pages 93-97 for an entertaining discussion. Roughly speaking, Leslie Lamport's rule is "If it sounds all right to replace a 'which' by a 'that', then Strunk & White say replace it." I found 385 instances of "which" in the document, and examined them all. Here are the edits against 08-007r2.pdf for the cases whichxxxxxthat need changing. EDITS ----- [10 : 2.1.9] Change "and which is treated" to "that is treated" [11 : 2.1.12] Change "or which might be accessible" to "or that might be accessible" ; Change "which the C International Standard" to "that the C International Standard" [12 : 2.1.28] Change "that has a value" to "with a value" to avoid having 2 "that"'s after the next edit. Change "and which cannot be defined" to "that cannot be defined". [16 : 2.1.55] Change "whose name appears" to "that appears" to smooth the parallelism between this and the next clause. Change "and which can be " to "and that can be" [21 : 2.1.103] Change "and which has" to "and that has". [22 : 2.1.109.2] Change "or which creates" to "or that creates" [22 : 2.1.112.3] Change "but which is not an internal subprogram" to "but is not an internal subprogram". [23 : 2.1.115] Change "in an intrinsic module, which is neither" to "in an intrinsic module that is neither". (Lose the comma!) If anyone believed the language that is there now, this would be a technical change since we drop the implied claim that all intrinsic functions or functions in an intrinsic module are transformational. [23 : 2.1.116.6] Change "and which therefore" to "and that therefore". [24 : 2.1.116.12.1] Change "another entity, which is" to "another entity that is". [29 : 2.3.3.1p1] Change "value to be computed which is" to "value to be computed that is". [29 : 2.3.5p2] Change "of other entities, which are" to "of other entities that are". (Lose the comma!) [33: 2.5.1.1p2] Consider changing "KIND, which determines" to "KIND that determines". But I think it's ok as it stands and won't call out future sentences like this one. [63 : 4.5.3.1p4] Change "a default value which is specified" to "a defulat value that is specified". [116 : 6.3p1] Change "denoted by a syntactic form, which indicates its type" to "denoted by a syntactic form that indicates its type". (Lose the comma!) [122 : 6.5.4p2 2nd line from bottom of page] Change "which either does not" to "that either does not". (How'd this one slip in? the bullet items are in parallel and the first couple already have "that".) [131 : 7.1.1p2] Change "using operands which are themselves" to "using operands that are themselves". [139 : 7.1.5.2.1p5 NOTE 7.16] The "which" looks ok, but change "value of" to "value". [170 : 8.1.3.2p1 3rd line] Change "entity which is associated" to "entity that is associated". [171 : 8.1.4 p1] Change "construct which may contain" to "construct that may contain". [184 : 8.1.9.2p2] Change "entity which is associated" to "entity that is associated". [220 : 9.6.4.7.3p2] Change "In the four interfaces, which" to "In the four interfaces that". (Lose the comma!) [266 : 10.11.4.2p1 NOTE 10.40] Change "and which contain" to "that contain". [339 : 13.7.43p6] Change "CSHIFT (V, SHIFT = 2) which has the value" to "CSHIFT (V, SHIFT = 2), which has the value". (Gain a comma!) [365 : 13.7.105p3] Change "have the same type which shall be" to "have the same type, which shall be". (Gain a comma!) [368 : 13.7.111p3] Change "of the same type which shall be" to "of the same type, which shall be". (Gain a comma!) [396 : 13.8.2.4] Change "A processor-dependent value which" to "A processor-dependent value that". [407 : 14.11.2p7 NOTE 14.9] Change "systems which are basically IEEE" to "systems that are basically IEEE". [422 : 14.12 NOTE 14.16] Change "!Alternative code which knows" to "!Alternative code that knows". Or, I don't know, leave it alone since there's no reason to expect comments in example programs to adhere to standards language. [489 : C.6.6p5 5th line from bottom of page] Change "processor/process, which processes the list items" to "processor/process that processes the list items". (Lose the comma!) [512 : C.9.6p32] Change "actual arguments which could have those" to "actual arguments that could have those". [512 : C.9.6p33] Change "fail to meet these rules but which can be" to "fail to meet these rules but that can be". [515 : C.11.2p12] Change "to the function C_LOC which returns" to "to the function C_LOC that returns". [522 : C.13.2.3.1p1] Change "3-dimensional Euclidean space which is" to "3-dimensional Euclidean space that is". In the last sentence, change "single logical variable which is" to "single logical variable that is".