MyNixOS website logo
Description

Grouped lists. Equal consecutive elements are grouped.

Grouped lists work like regular lists, except for two conditions:

  • Grouped lists are always finite. Attempting to construct an infinite grouped list will result in an infinite loop.

  • Grouped lists internally represent consecutive equal elements as only one, hence the name of grouped lists.

This mean that grouped lists are ideal for cases where the list has many repetitions (like [1,1,1,1,7,7,7,7,7,7,7,7,2,2,2,2,2], although they might present some deficiencies in the absent of repetitions.

grouped-list

Welcome to the grouped-list repository.

We are at an early stage of development, but contributions are more than welcome. If you are interested, feel free to submit a pull request.

What is this about?

This library defines the type of grouped lists, Grouped. Values of this type are lists with a finite number of elements. The only special feature is that consecutive elements that are equal on the list are internally represented as a single element annotated with the number of repetitions. Therefore, operations on lists that have many consecutive repetitions perform much better, and memory usage is reduced. However, this type is suboptimal for lists that do not have many consecutive repetitions. We are trying to ameliorate this.

Automatic build.

Build Status

Metadata

Version

0.2.3.0

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows