Skip to main content
Deno 2 is finally here 🎉️
Learn more

seqtools

deno land deno doc GitHub release (latest by date) codecov License

test NPM standard-readme compliant semantic-release: angular

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.

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