Ah damn, forgot about that discussion (combinatorial explosion etc.).

On Dec 24, 2012, at 5:08 , Allen Wirfs-Brock <[email protected]> wrote:

> Won't work for an explicitly pass undefined because that triggers assignment 
> of the default value
> 
> Axel Rauschmayer <[email protected]> wrote:
> 
> How about the following solution?
> 
>     let missingArgument = {}; // or a symbol
>     function reduce(callback, initial = missingArgument){
>         let startIndex;
>      
>         if (initial === missingArgument) {
>             initial = this[0];
>             startIndex = 1;
>         } else {
>             startIndex = 0;
>         }
>      
>         ...etc...
>     }
> 
> On Dec 24, 2012, at 3:32 , Allen Wirfs-Brock <[email protected]> wrote:
> 
>> On Dec 23, 2012, at 5:35 PM, Brandon Benvie wrote:
>> 
>>> Here's one of the examples that was sticking out in my mind earlier that 
>>> Brendan's solution takes care of. Array.prototype.reduce requires that if 
>>> the initial value isn't provided then the first value of the array is the 
>>> initial value.
>>> 
>>> Using rest:
>>> 
>>>    function reduce(callback, ...initial){
>>>      var current, index;
>>> 
>>>      if (initial.length) {
>>>        index = 0;
>>>        current = initial[0];
>>>      } else {
>>>        index = 1;
>>>        current = this[0];
>>>      }
>>> 
>>>      ...etc...
>>>    }
>>> 
>> 
>> the way I would express this example  is:
>> 
>> function reduce(callback, ...rest){
>>  var current, index;
>>  if (rest.length > 0) {
>>        index = 0;
>>        current = rest[0];
>>      } else {
>>        index = 1;
>>        current = this[0];
>>      }
>>  ...etc...
>> }
>> 
>> which seems to exactly express the intent
> 
> -- 
> Dr. Axel Rauschmayer
> [email protected]
> 
> home: rauschma.de
> twitter: twitter.com/rauschma
> blog: 2ality.com
> 

-- 
Dr. Axel Rauschmayer
[email protected]

home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to