MyNixOS website logo
Description

Library Type Safe implementation of Dynamic Pipeline Paradigm (DPP)

dynamic-pipeline is a Type Safe Dynamic and Parallel Streaming Library, which is an implementation of Dynamic Pipeline Paradigm (DPP) proposed in this paper DPP.

The aim of this tool is to provide all the Type level constructs to guide the user in building a DPP flow to solve any algorithm that fits on this computational model.

The idea behind the implementation is similar to other Type level programming libraries like @servant@

Some of the feature of this library includes:

  • Small Number of Dependencies: Dependencies have been kept to minimum in order to reduce compilation time.

  • Type Level Encoding: As it was explained before, there is an intensive use of Type Level techniques in the Library in order to guide the user in defining the Flow Model and fill the gaps with the combinators provided and the Compiler indications. On the other hand some Type Custom Errors have been encoded in the Library in order to provide meaningful messages about the Data Flow Grammar Defined in DPP.

  • Stream Parallelization: DPP model follows a Parallelization Pipeline approach with the use of intermediate Channels. All the burden have been hidden for the user in order to reduce complexity and focus on the algorithm problem implementations.

  • Safe Scoped Execution: Use of Existential to define the Scope execution of DPP reducing even more the complexity to the user.

Import DynamicPipeline for using the library.

DynamicPipeline

badge Hackage

DynamicPipeline is a Type Safe Dynamic and Parallel Streaming Library, which is an implementation of Dynamic Pipeline Paradigm (DPP) proposed in this paper DPP.

The aim of this Library is to provide all the Type level constructs to guide the user in building a DPP flow to solve any algorithm that fits on this computational model.

This implementation has been developed using Type Level Programming techniques like Type families, Defunctionalization, Existential Types and Dynamic Record Tagged Types among others.

Using all this techniques, we provide a High Level and Type SafeDPP Library to build a Data Flow Algorithm avoiding as much as possible boilerplate code, but maintaining safety and robustness.

Prerequisites

This project has been built and developed with the following versions:

  • Stack2.1.3 or higher
  • Stack LTS 17.7
  • GHC8.10.3

Cloning the project

git clone https://github.com/jproyo/dynamic-pipeline

Issues

https://github.com/jproyo/dynamic-pipeline/issues

Pull Request

https://github.com/jproyo/dynamic-pipeline/pulls

Licensing

dynamic-pipeline is an open source project available under a liberal BSD-3-Clause license.

Metadata

Version

0.3.2.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