dynamic-pipeline: Library Type Safe implementation of Dynamic Pipeline Paradigm (DPP).

[ bsd3, data, data-flow, library, parallel, pipes, program, streaming, type-safe ] [ Propose Tags ]

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 <code>servant</code>

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.


[Skip to Readme]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5, 0.2.0.0, 0.3.0.0, 0.3.1.0, 0.3.1.1, 0.3.1.2, 0.3.1.3, 0.3.2.0
Dependencies async (>=2.1.0 && <=2.2.3), base (>=4.7 && <5), bytestring (>=0.10.9.0 && <=0.11.1.0), containers, dynamic-pipeline, HList (>=0.5.0.0), lens (>=4.19 && <=5.0.1), optparse-applicative, relude (>=0.7.0.0 && <=1.0.0.1), trifecta, unagi-chan (>=0.4.1.0) [details]
License BSD-3-Clause
Copyright Copyright (C) 2021 Juan Pablo Royo Sales
Author Juan Pablo Royo Sales
Maintainer juanpablo.royo@gmail.com
Category Data, Data Flow, Pipes, Streaming, Parallel, Type-safe
Home page https://github.com/jproyo/dynamic-pipeline#readme
Bug tracker https://github.com/jproyo/dynamic-pipeline/issues
Source repo head: git clone https://github.com/jproyo/dynamic-pipeline
Uploaded by jproyo at 2021-08-01T13:54:41Z
Distributions NixOS:0.3.2.0
Executables examples
Downloads 1175 total (49 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for dynamic-pipeline-0.3.2.0

[back to package description]

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 Safe DPP 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:

  • Stack 2.1.3 or higher
  • Stack LTS 17.7
  • GHC 8.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