@hackage ADPfusion0.6.0.0
Efficient, high-level dynamic programming.
Categories
License
BSD-3-Clause
Maintainer
choener@bioinf.uni-leipzig.de
Links
Versions
Installation
Tested Compilers
Dependencies (20)
- DPutils >=0.1.0 && <0.1.1
- OrderedBits >=0.0.2 && <0.0.3
- PrimitiveArray >=0.10.0 && <0.10.1
- QuickCheck >=2.7
- base >=4.7 && <5.0
- bits >=0.4 Show all…
Dependents (15)
@hackage/WordAlignment, @hackage/Forestry, @hackage/Gene-CluEDO, @hackage/FormalGrammars, @hackage/GrammarProducts, @hackage/RNAFold, Show all…
Package Flags
debug
(off by default)
Enable bounds checking and various other debug operations at the cost of a significant performance penalty.
debugoutput
(off by default)
Enable debug output, which spams the screen full of index information
debugdump
(off by default)
Enable dumping intermediate / core files
dump-core
(off by default)
Dump HTML for the core generated by GHC during compilation
examples
(off by default)
build the examples
spectest
(off by default)
build the spec-ctor test case
devel
(off by default)
build additional tests
btstruc
(off by default)
performance test for backtracking structures
llvm
(off by default)
use llvm
ADPfusion
generalized Algebraic Dynamic Programming Homepage
Ideas implemented here are described in a couple of papers:
- Christian Hoener zu Siederdissen
Sneaking Around ConcatMap: Efficient Combinators for Dynamic Programming
2012, Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
paper preprint - Andrew Farmer, Christian Höner zu Siederdissen, and Andy Gill.
The HERMIT in the stream: fusing stream fusion’s concatMap
2014, Proceedings of the ACM SIGPLAN 2014 workshop on Partial evaluation and program manipulation.
paper - Christian Höner zu Siederdissen, Ivo L. Hofacker, and Peter F. Stadler.
Product Grammars for Alignment and Folding
2014, IEEE/ACM Transactions on Computational Biology and Bioinformatics. 99
paper - Christian Höner zu Siederdissen, Sonja J. Prohaska, and Peter F. Stadler
Algebraic Dynamic Programming over General Data Structures
2015, BMC Bioinformatics
preprint - Maik Riechert, Christian Höner zu Siederdissen, and Peter F. Stadler
Algebraic dynamic programming for multiple context-free languages
2016, Theoretical Computer Science
preprint
Introduction
ADPfusion combines stream-fusion (using the stream interface provided by the vector library) and type-level programming to provide highly efficient dynamic programming combinators.
From the programmers' viewpoint, ADPfusion behaves very much like the original ADP implementation http://bibiserv.techfak.uni-bielefeld.de/adp/ developed by Robert Giegerich and colleagues, though both combinator semantics and backtracking are different.
The library internals, however, are designed not only to speed up ADP by a large margin (which this library does), but also to provide further runtime improvements by allowing the programmer to switch over to other kinds of data structures with better time and space behaviour. Most importantly, dynamic programming tables can be strict, removing indirections present in lazy, boxed tables.
As an example, even rather complex ADP code tends to be completely optimized to loops that use only unboxed variables (Int# and others, indexIntArray# and others).
Completely novel (compared to ADP), is the idea of allowing efficient monadic combinators. This facilitates writing code that performs backtracking, or samples structures stochastically, among others things.
Installation
Follow the gADP examples.
Implementors Notes (if you want to extend ADPfusion)
These have been moved to HACKING.md.
Contact
Christian Hoener zu Siederdissen
Leipzig University, Leipzig, Germany
choener@bioinf.uni-leipzig.de
http://www.bioinf.uni-leipzig.de/~choener/