diff --git a/.gitignore b/.gitignore index 1377554..ef5f69b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.swp +node_modules/ diff --git a/lazy.js b/lazy.js index 9ff3520..c2f308a 100644 --- a/lazy.js +++ b/lazy.js @@ -74,12 +74,13 @@ function Lazy (em, opts) { ); } + self.pop = function (f) { + self.head(f); + return self.skip(1); + } + self.head = function (f) { - var lazy = newLazy(); - lazy.on(dataName, function g (x) { - f(x) - lazy.removeListener(dataName, g) - }) + self.once(dataName, f); } self.tail = function () { diff --git a/readme.txt b/readme.txt index 6952a60..d497cfe 100644 --- a/readme.txt +++ b/readme.txt @@ -153,6 +153,7 @@ Supports the following operations: * lazy.product(f) * lazy.foldr(op, i, f) * lazy.skip(n) + * lazy.pop(f) * lazy.head(f) * lazy.tail(f) * lazy.join(f) diff --git a/test/head.js b/test/head.js index b275362..b225c11 100644 --- a/test/head.js +++ b/test/head.js @@ -2,25 +2,33 @@ var assert = require('assert'); var Lazy = require('..'); var expresso = expresso; -function range(i, j) { - var r = []; - for (;i