Taowei is a functional, iterable-focused JavaScript library.
This is a curiosity-driven project that provides a set of utilities that make working with iterables and functional programming more intuitive and elegant.
- Keep simple and fun
- Built for lazy reusable iterables
- Readable code
- Curried, functional-style composable, with a love for point-free programming
- Provide enough functions to cover most common programmer needs, allowing easy composition.
- Taowei should be fun to develop (with concise and clear implementations) and fun to use
- 100% test coverage
- Comprehensive documentation
- Performance optimizations
- TypeScript support
- Async support
Install via npm:
npm install taowei
And use it:
import { isEven } from 'taowei'
console.log(isEven(5)) // false
Use directly via CDN:
import { isEven } from 'https://unpkg.com/taowei'
console.log(isEven(5)) // false
Find the sum of all multiples of 3 or 5 below 1000. https://projecteuler.net/problem=1
import { sum, filter, or, isDivisibleBy as isMultipleOf, enumFromTo } from 'taowei'
const nums = enumFromTo(1)(999)
const predicate = or(isMultipleOf(3))(isMultipleOf(5))
const filtered = filter(predicate)(nums)
console.log(sum(filtered)) // 233168
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms. https://projecteuler.net/problem=2
import { withPrevious, takeWhile, isLesserThanOrEqualTo as lte,
repeat, sum, filter, concat, isEven } from 'taowei'
const fibonacci = withPrevious(2)(concat([1, 2, repeat(sum)]))
const evenFibonacci = filter(isEven)(fibonacci)
const firstEvenFibonacci = takeWhile(lte(4_000_000))(evenFibonacci)
console.log(sum(firstEvenFibonacci)) // 4613
For more examples, check out the integration tests.
To run tests, use:
npm run test