Functional application: Allow any granularity of arguments (currying, essentially).

This commit is contained in:
David Braun 2017-10-17 10:34:17 -04:00
parent 04bbe30a00
commit d7c117619a
3 changed files with 17 additions and 31 deletions

View file

@ -129,26 +129,6 @@ describe(`Channel`, function() {
});
describe(`functional interface`, async function() {
describe(`map`, function() {
it(`full application`, async function() {
assert.deepEqual(
await toArray(
Channel.map(value => value.toUpperCase(), Channel.of(`a`, `b`, `c`))
),
[`A`, `B`, `C`]
);
});
it(`partial application`, async function() {
assert.deepEqual(
await toArray(
Channel.map(value => value.toUpperCase())(Channel.of(`a`, `b`, `c`))
),
[`A`, `B`, `C`]
);
});
});
describe(`slice`, function() {
it(`full application`, async function() {
assert.deepEqual(
@ -157,7 +137,14 @@ describe(`functional interface`, async function() {
);
});
it(`partial application`, async function() {
it(`single argument application`, async function() {
assert.deepEqual(
await toArray(Channel.slice(1)(4)(Channel.of(0, 1, 2, 3, 4))),
[1, 2, 3]
);
});
it(`double argument application`, async function() {
assert.deepEqual(
await toArray(Channel.slice(1, 4)(Channel.of(0, 1, 2, 3, 4))),
[1, 2, 3]