MyNixOS website logo
Description

Quiver finite stream processing library.

Quiver is a powerful stream processing library for combinatorial and monadic representation of computations over both inductive and coinductive data streams.

It is similar to Gabriel Gonzalez's pipes and Michael Snoyman's conduit, but generalises both with support for functor-based computations and a clean support for finite (i.e., inductive) data streams, both upstream and downstream of the computation being defined.

Quiver

Copyright © 2015 Patryk Zadarnowski «[email protected]».
All rights reserved.

Quiver is a powerful stream processing library for combinatorial and monadic representation of computations over both inductive and coinductive data streams.

It is similar to Gabriel Gonzalez's pipes and Michael Snoyman's conduit, but generalises both with support for functor-based computations and a clean support for finite (i.e., inductive) data streams, both upstream and downstream of the computation being defined.

The underlying data structure, P, is almost identical to the Proxy data structure of the Pipes library, except that the Consume and Produce constructors (corresponding, respectively, to Request and Response in the Pipes' Proxy data type) include an additional argument which explicitly captures the processor's behaviour in the event of input stream depletion (for Consume) or output decoupling (for Produce). This simple mechanism subsumes Conduit's need for elaborate unconsumed-input tracking mechanisms, and allows us to provide a mathematically-clean framework for processing of finite data streams.

This library is currently very young, and users should expect significant changes to the Quiver core combinators as the underlying theory is developed and the interface stabilises asymptotically to the future version 1.0.

Metadata

Version

1.1.3

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