Sorry I meant: const tap = f => x => { f(x); return x; }
Elie ROTENBERG Directeur général adjoint elie.rotenb...@webedia-group.com 336 89 29 98 19 twitter elierotenberg facebook elie.rotenberg skype elie.rotenberg github elierotenberg 2, rue Paul Vaillant Couturier - CS 60102 - 92532 Levallois-Perret Cedex - T: 33 811 69 41 42 On Sun, Jul 16, 2017 at 8:09 PM, Elie Rotenberg <e...@rotenberg.io> wrote: > I think the most common use of this pattern would be debugging, and in > this context you don't really care to use a little helper and > Array.prototype.map, eg: > > const tap = f => ...args => { > f(...args); > return x; > }; > > [1, 2, 3] > .map(num => num * 2) > .map(tap(console.log.bind(console))); > .reduce((a, b) => a + b); > > > On Sun, Jul 16, 2017 at 8:00 PM, Eli White <e...@eli-white.com> wrote: > >> I'd like to propose a `.tap` method on the Array prototype. I was able to >> find some previous discussion here but it was off the main topic and seemed >> to die out: https://mail.mozilla.org/pipermail/es-discuss/2015-Octo >> ber/044454.html >> >> A tap method enables the user to inspect an array in the chain. >> >> For example, inspection: >> >> If you have a chain like this: >> >> ``` >> [1, 2, 3] >> .map(num => num * 2) >> .reduce((a, b) => a + b); >> ``` >> >> When you want to see what the value of the array is between the map and >> reduce, you would typically do this: >> >> ``` >> const value = [1, 2, 3] >> .map(num => num * 2); >> >> console.log(value); >> >> value.reduce((a, b) => a + b); >> ``` >> >> With `.tap`, you'd be able to do this: >> >> ``` >> [1, 2, 3] >> .map(num => num * 2) >> .tap(console.log.bind(console)); >> .reduce((a, b) => a + b); >> ``` >> >> `.tap` would be called once, passed the entire array as the first >> argument to the callback, and would return the array after the callback was >> finished. >> >> This isn't something that can cleanly be done with a user-land function >> since it would have to wrap the chain, or replace all of the chained >> functions like underscore does. >> >> An example of wrapping the chain: >> >> ``` >> myTap( >> ( >> [1, 2, 3] >> .map(num => num * 2) >> ), >> console.log.bind(console); >> ) >> .reduce((a, b) => a + b); >> ``` >> >> _______________________________________________ >> es-discuss mailing list >> es-discuss@mozilla.org >> https://mail.mozilla.org/listinfo/es-discuss >> >> >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss