- From: <bugzilla@wiggum.w3.org>
- Date: Thu, 19 Oct 2006 02:35:34 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=3842 ------- Comment #4 from jmdyck@ibiblio.org 2006-10-19 02:35 ------- (In reply to comment #3) > > No, I don't think there's any uncertainty. The sentence clearly describes a > relation between variables, not between variable names. I disagree re "clearly". True, it uses the word "variable" and not "variable name", but it also refers to "$x" and "$y", which are variable names (or, strictly speaking, *contain* variable names), not variables. (You could avoid that particular problem by referring to, say, "V<sub>1</sub>" and "V<sub>2</sub>", i.e., by making them look as different as possible from concrete variable references, but I don't think it would increase the clarity that much; the problem is that on the whole, the spec doesn't make that much of a distinction between variables and variable names.) > The fact that two variables can have the same name is completely irrelevant. That might be worth saying in the spec, but I think I have a better suggestion... > A more pendantic definition might be > > A variable binding $x "depends on" a variable binding $y or a function f2 if a > variable reference bound to $y or a function call bound to f2 appears > in the initializing expression of $x. A function f1 "depends on" a variable > binding $y or a function f2 if a variable reference bound to $y or a function > call bound to f2 appears in the body of f1. If a variable binding depends > on itself by any combination of direct or transitive dependencies, a static > error is raised [XQST0054]. Well, if we're getting pedantic, then: -- The only bolded occurrence of "variable binding" (in 4.14) strongly suggests that a variable declaration is not a variable binding. So a "variable binding" is exactly what the definition of "depends on" should *not* be concerned with. (Moreover, the spec seems generally undecided on whether a "variable binding" is a static or dynamic thing, and whether it binds a variable to a value or an expression.) -- According to 3.1.2, a variable reference is not "bound to" a variable binding, it "matches" or "refers to" a variable binding. -- There's no basis for the phrase "a function call bound to [the function] f2". (Mind you, I don't think the spec provides any verb for that relation.) > ... but I would have thought any reader capable of understanding that would > also understand the text that Don proposed. I think the second one, despite my pedantic objections, would have given me less uncertainty about your intent than the first one did. However, I think you can do better (convey your intent without uncertainty, and without pedantry): instead of making "depends on" a relation on variables and functions (or variable bindings and functions), make it a relation on variable declarations and function declarations. E.g.: A variable declaration V1 "depends on" a variable declaration V2 or a function declaration F2 if a use of V2 or F2 appears in the initializing expression of V1. etc. [or maybe "reference to" instead of "use of"] This gets away from the not-that-well-defined notions of "variable" and "variable binding", and instead couches the definition (as much as possible) in the nice solidly static world of syntax, where it's clear that (e.g.) let $x := 42 return $x does not contain a variable declaration or a use of one, and so does not enter into the "depends on" relation.
Received on Thursday, 19 October 2006 02:35:48 UTC