dtao / lazy.js

Like Underscore, but lazier

Home Page:http://danieltao.com/lazy.js/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

auto-curried, data-last functions

graingert opened this issue · comments

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

@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)

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.