dtao / lazy.js

Like Underscore, but lazier
http://danieltao.com/lazy.js/
MIT License
6.01k stars 267 forks source link

auto-curried, data-last functions #215

Open graingert opened 6 years ago

graingert commented 6 years ago

Like lodash/fp but lazy, or https://github.com/ReactiveX/IxJS

dtao commented 6 years ago

Could you elaborate on what you mean by "auto-curried"? Is this essentially a duplicate of #24?

graingert commented 6 years ago

@dtao no not sure what that's about. I'm talking:

var result = Lazy(people)
  .pluck('lastName')
  .filter(function(name) { return name.startsWith('Smith'); })
  .take(5);

becomes:

var result = l.flow(
  l.pluck('lastName'),
  l.filter(function(name) { return name.startsWith('Smith'); }),
  l.take(5),
)(people)
dtao commented 6 years ago

Ah, gotcha. Yes, someone asked about something similar before... unfortunately I can't seem to find it.

Anyway, I think something like this exists already. It is called apply():

var result = Lazy([])
  .pluck('lastName'),
  .filter(function(name) { return name.startsWith('Smith'); }),
  .take(5)
  .apply(people);

Granted, this interface is very odd (passing in an empty array initially—weird); and the implementation is very hacky. I'm not pleased with it at all. But it does exist.

Probably I will consider changing how this works and introducing something more like what you've suggested in a future version.

graingert commented 6 years ago

Those are methods. I'm looking for something like lodash/fp

On 5 Feb 2018 18:21, "Dan Tao" notifications@github.com wrote:

Ah, gotcha. Yes, someone asked about something similar before... unfortunately I can't seem to find it.

Anyway, I think something like this exists already. It is called apply():

var result = Lazy([]) .pluck('lastName'), .filter(function(name) { return name.startsWith('Smith'); }), .take(5) .apply(people);

Granted, this interface is very odd (passing in an empty array initially—weird); and the implementation is very hacky. I'm not pleased with it at all. But it does exist.

Probably I will consider changing how this works and introducing something more like what you've suggested in a future version.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/dtao/lazy.js/issues/215#issuecomment-363173803, or mute the thread https://github.com/notifications/unsubscribe-auth/AAZQTFpZ0Zyy8Wb8V7lK5OdK83p3JCgXks5tR0azgaJpZM4QYJRU .