seqtools
Efficient utilities for sequence.
Table of Contents
Background
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.
Install
deno.land:
import * as mod from "https://deno.land/x/seqtools/[snake_case].ts";
npm:
npm i seqtools
Usage
mod.ts
does not exist.
head
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);
tail
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([]), []);
init
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([]), []);
last
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);
headTail
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, []]);
initLast
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]);
API
See deno doc for all APIs.
Contributing
See contribution.
License
MIT © 2023 Tomoki Miyauchi