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.
Examples: examples directory in the package
DynamicPipeline
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:
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.