Efficient utilities for sequence.
This project is a sequence version of itertools.
It provides the most efficient solution for sequence.
A sequence is an "indexable, sliceable data structure". See
Sequence
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:
import * as mod from "https://deno.land/x/seqtools/[snake_case].ts";
npm:
npm i @miyauci/seqtools
mod.ts
does not exist.
Extract the first element of a sequence.
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.
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.
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.
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.
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.
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