Expanded function syntax

Mark Filipak markfilipak.ecmascript4 at gmail.com
Fri Feb 1 17:28:37 PST 2008


Mr. Eich: Thank you for your suggestion. Unless I've been spending time with Mescalito, to implement

  getFirstChildOfElement(Papa).withTagName('baby'),

since it has no idea which child is targeted, the first function would have to return an array of all children. Thus .withTagName() would have to be added as a method of Array. Correct? I'm not sure it would be wise to add the overhead as my example is but one of a great many such functions I would wish to create. BTW, I already use your suggested technique to emulate such things as getComputedStyle(Element,'').getPropertyValue(propName) in my IE6 DOM compatibility library.

Mr. Keesey: Thank you for your response. I can't begin to fathom what you have written <grin>.

And Mr. Hall: Thank you for your thoughts. I wish there was a clean way to add my pet functionality as I've always felt restricted by traditional function syntax but as you have pointed out, doing so would create problems.

Excuse the noise from the hinterland. I'm out of my depth. You folks carry on with your good work. I'm sure I'll be happy with Es4 and I will use it.

Before I sign out, may I ask if any of you have experience with Snobol? It is, in my opinion, a superior string processing language the core concepts of which would make an excellent addition to regular expressions.

Regards,
Mark Filipak

T. Michael Keesey wrote:
> On Feb 1, 2008 12:01 PM, Brendan Eich <brendan at mozilla.org> wrote:
>> On Jan 31, 2008, at 5:13 PM, Mark Filipak wrote:
>>
>>> What I have to write now:
>>>
>>>  getFirstChildOfElementWithTagName(Papa, 'baby');
>>>
>>> What I'd like to be able to write:
>>>
>>>  getFirstChildOfElement(Papa)withTagName('baby');
>> If you put a . after the first ) then you can write such a chained
>> expression today. It costs one more function object and one more .
>> character, but if it's important to you for clarity, those costs may
>> be worth paying.
> 
> Also, I may not have the syntax exactly right, but I believe you can
> also do something like this:
> 
> function getFirstChild(argObj:{element:XML, tagName:AnyString}):XML {
>     return element.(name() == tagName)[0];
> }
> 
> var papa:XML;
> // ...
> var firstborn:XML = getFirstChild({element: papa, tagName: "baby"});
> 
> (Actually, in this case, the e4x syntax is so succinct that the
> function is kind of pointless, but you get the idea -- use a single
> argument, of an ad hoc record type, to clarify argument roles.)
> 



More information about the Es4-discuss mailing list