Skip to content

joneshf/ziparray

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZipArray

Provides an alternative Apply implementation for arrays.

fantasyland static-land

Installation

npm install ziparray

Motivation

The common implementation of Apply for arrays works with all combinations. However, there is another implementation of Apply for arrays that works in "pairwise" fashion. You can think of this as a data type level encoding of the zip family of functions. Encoding the effect ("pairwise" application) in the data type allows us to write code that expresses our intentions better.

Usage

Fantasy Land

> const ZipArray = require('ziparray');
undefined
> ZipArray([1,2,3])
ZipArray([1,2,3])
> ZipArray([1,2,3]).map(x => x * 10)
ZipArray([10,20,30])
> ZipArray([x => x + 1, x => x * 3]).ap(ZipArray([1,2,3]))
ZipArray([2,6])
> ZipArray([x => x + 1, x => x * 3]).ap(ZipArray([1,2]))
ZipArray([2,6])
> ZipArray([x => y => x + y, x => y => x * y]).ap(ZipArray([1,20])).ap(ZipArray([3,40]))
ZipArray([4,800])

Static Land

> const ZipArray = require('.');
undefined
> const {map, ap} = ZipArray;
undefined
> map(x => x + 10, [1,2,3])
[ 11, 12, 13 ]
> ap([x => x + 1, x => x * 3], [1,2,3])
[ 2, 6 ]
> ap([x => x + 1, x => x * 3], [1,2])
[ 2, 6 ]
> ap(ap([x => y => x + y, x => y => x * y], [1,20]), [3,40])
[ 4, 800 ]

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published