- From: <bugzilla@jessica.w3.org>
- Date: Wed, 21 Jul 2010 02:49:53 +0000
- To: public-qt-comments@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=10205 --- Comment #2 from dnovatchev@gmail.com 2010-07-21 02:49:52 --- (In reply to comment #1) > Provisional (personal) response: > (1) is editorial, I'll see what I can do. (The whole idea of classifying > functions into sections is really rather a mess.) Something that's more distinguishing (don't know if it's better): "The following functions have a single argument that is a function item" > (2) editorial, yes, seems a reasonable suggestion. > (3) (a) (substantive) on finding a better name for the function: please make a > suggestion, and the WG can take a vote on it. I have thought about a good name. My suggestion is: fn:remap This is both short and close to "map", but at the same time shows that this function is not completely a "map" -- it isn't isomorphic on the list-argument and can significantly affect its shape, *re*structure it in the result. So, "remap" can be thought of as an abbreviation of "restructuring-map". The same observations and the same suggestion hold for fn:map-pairs, of course. > (b) (editorial) On explaining > what the function does, I prefer a clear statement of the rules supplemented by > notes and examples, and I think the section currently achieves that. Perhaps > they could be expanded. I guess that just explaining the name "remap" will provide a perfect description of the peculiarities of this function. > (4) (editorial) I agree with the comment; although one can deduce the > possibility of an error from the way the function is specified, it would be > useful to draw this out separately. Agreed. > (5) (editorial) I agree with the comment. > (6) (editorial) Agreed, although one can deduce the order of results from the > specification it would be useful to draw it out separately. Agreed. > (7) (editorial) Technically you're right that this information is redundant, > but I still think it's useful as many readers are still new to higher order > functions and our notation for them. I propose to rephrase it to make it clear > that it's redundant, e.g. "A consequence of the function signature is..." I agree with the proposed new text and I think it would be best to put this as a "Note:" and not as an "Error condition" that is specific to this function. > (8, 11) (editorial) Thanks for the pointer. I agree that these two functions > need better descriptions, and better guidance on how they differ, and I'm > grateful for any help in improving the description. Though of course, the spec > mustn't turn into a tutorial on functional programming. I would be glad if I can help. Agree that we are not producing a tutorial -- just short hints and maybe a link to more detailed material would suffice. > (9, 10) (editorial?) I can see what you're saying here, but I think it reflects > a misunderstanding. The $zero referred to in the error description is the value > of the second argument supplied by the caller of fn:fold-left(). There is only > one such value. It's not a reference to the values passed on the internal > recursive calls in the reference implementation of the function. I'll see if I > can find some way to avoid this confusion. This is the proposed implementation: declare function fn:fold-left($f, $zero, $seq) { if (fn:empty($seq)) then $zero else fn:fold-left($f, $f($zero, fn:head($seq)), fn:tail($seq)) }; for the internal call of fn:fold-left above, its $zero has value: $f($zero, fn:head($seq)) The error that is described happens on the internal call, and the error is for this exactly call, and the reason is that the $zero argument to this call is not of the type that is acceptable for the first argument of f(). I think that we both understand this. I think that a more exact phrasing of the error condition that avoids this issue is: "A type error occurs if the supplied function $f to the fold-left function or to any of its internal recursive calls cannot be applied to two arguments, where the first argument is the value of $zero and the second is the value of fn:head($seq), passed to that call." Of course, all this phrazing would be unnecessary had we a notation as the pseudocode given as example in (12). > (12) (editorial). I can see the value of a notation like the one you are > proposing. It could be applied to large numbers of other functions where there > are constraints affecting the relationships of the types of different arguments > and/or the type of the result. I think it would require some effort to define > the semantics of such a notation with sufficient precision, and then to use it > uniformly across the whole spec. There's a danger of trying to replicate some > of the work that was previously done in the formal semantics. I think this > needs WG discussion and a more complete proposal. Meanwhile I think it's better > to use English prose to express the constraints. As we see from (9) and (10), it becomes very difficult and challenging to explain type constraints in natural language -- as we well know natural language is not a good tool for expressing exact relations and constraints, due to its ambiguities. If we have a mens of expression that provide a strict and unambiguous way to express type constraints, we should try to use it instead of unrestricted natural language. -- Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug.
Received on Wednesday, 21 July 2010 02:49:55 UTC