diff --git a/list/__tests__/filter.test.js b/list/__tests__/filter.test.js index ecd977c..00799d5 100644 --- a/list/__tests__/filter.test.js +++ b/list/__tests__/filter.test.js @@ -50,4 +50,13 @@ describe('list/filter', () => { const actual = filter(asyncWhenIsOdd)(iterator()) return expect(actual).resolves.toMatchObject(expected) }) + + test('filter does not cache', () => { + expect.assertions(1) + const expected = [ 1, 3 ] + const filterOdd = filter(isOdd) + filterOdd([ 1, 2, 3 ]) + const actual = filterOdd([ 1, 2, 3 ]) + expect(actual).toEqual(expected) + }) }) diff --git a/list/__tests__/map.test.js b/list/__tests__/map.test.js index 8710d6d..91e434a 100644 --- a/list/__tests__/map.test.js +++ b/list/__tests__/map.test.js @@ -52,4 +52,13 @@ describe('list/map', () => { const actual = map(asyncWhenOddDouble)(iterator()) return expect(actual).resolves.toMatchObject(expected) }) + + test('map does not cache', () => { + expect.assertions(1) + const expected = [ 2, 4 ] + const mapDouble = map(double) + mapDouble([ 1, 2 ]) + const actual = mapDouble([ 1, 2 ]) + expect(actual).toEqual(expected) + }) }) diff --git a/list/filter.js b/list/filter.js index 2e48908..f80afc5 100644 --- a/list/filter.js +++ b/list/filter.js @@ -5,6 +5,6 @@ const reduceWhile = require('./reduceWhile') const asyncFilterReducer = func => acc => x => call(val => (val && acc.push(x), acc))(func(x)) // filter :: Function -> Iterable -> Array -const filter = predicate => reduceWhile(null)(asyncFilterReducer(predicate))([]) +const filter = predicate => iterable => reduceWhile (null) (asyncFilterReducer (predicate)) ([]) (iterable) // eslint-disable-line module.exports = filter diff --git a/list/map.js b/list/map.js index 35656e3..af88b35 100644 --- a/list/map.js +++ b/list/map.js @@ -4,6 +4,6 @@ const reduceWhile = require('./reduceWhile') const asyncMapReducer = func => acc => x => call(val => (acc.push(val), acc))(func(x)) // map :: Function -> Iterable -> Array -const map = func => reduceWhile(null)(asyncMapReducer(func))([]) +const map = func => iterable => reduceWhile (null) (asyncMapReducer (func)) ([]) (iterable) // eslint-disable-line module.exports = map