Efficient utilities for sequence
npm install @miyauci/seqtools








Efficient utilities for sequence.
- Background
- Install
- Usage
- head
- tail
- init
- last
- headTail
- initLast
- API
- Contributing
- License
This project is a sequence version of
itertools.
It provides the most efficient solution for sequence.
A sequence is an "indexable, sliceable data structure". SeeSequence for the specific interface.
Standard data structures that satisfy this are string and array.
These data structures encompass multiple data and require efficient data
processing. However, in many cases, multiple alternatives exist to accomplish
the same thing.
If you do something similar, you can always use this project. In general,
index access and slicing are performance optimal.
deno.land:
``ts`
import * as mod from "https://deno.land/x/seqtools/[snake_case].ts";
npm:
`bash`
npm i @miyauci/seqtools
mod.ts does not exist.
Extract the first element of a sequence.
`ts
import { head } from "https://deno.land/x/seqtools/head.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
assertEquals(head([1, 2, 3]), 1);
assertEquals(head("abc"), "a");
assertEquals(head([]), undefined);
`
Extract the elements after the head of a sequence.
`ts
import { tail } from "https://deno.land/x/seqtools/tail.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
assertEquals(tail([1, 2, 3]), [2, 3]);
assertEquals(tail("abc"), "bc");
assertEquals(tail([0]), []);
assertEquals(tail([]), []);
`
Extract the elements before the last of a sequence.
`ts
import { init } from "https://deno.land/x/seqtools/init.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
assertEquals(init([1, 2, 3]), [1, 2]);
assertEquals(init("abc"), "ab");
assertEquals(init([0]), []);
assertEquals(init([]), []);
`
Extract the last element of a sequence.
`ts
import { last } from "https://deno.land/x/seqtools/last.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
assertEquals(last([1, 2, 3]), 3);
assertEquals(last("abc"), "c");
assertEquals(last([]), undefined);
`
Split the sequence into head and tail.
`ts
import { headTail } from "https://deno.land/x/seqtools/head_tail.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
assertEquals(headTail([1, 2, 3]), [1, [2, 3]]);
assertEquals(headTail("abc"), ["a", "bc"]);
assertEquals(headTail([]), [undefined, []]);
`
Split the sequence into init and last.
`ts
import { initLast } from "https://deno.land/x/seqtools/init_last.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts";
assertEquals(initLast([1, 2, 3]), [[1, 2], 3]);
assertEquals(initLast("abc"), ["ab", "c"]);
assertEquals(initLast([]), [[], undefined]);
``
See deno doc for all APIs.
See contribution.
MIT © 2023 Tomoki Miyauchi