{-| Module: HyloDP Description: A simple and efficient solver for Dynamic Programming problems. Copyright: (c) David Llorens and Juan Miguel Vilar, 2020 License: BSD-3-Clause Stability: experimental Practical implementation of a solver for Dynamic Programning problems. This package contains the implementation of the research article: * "Easily solving dynamic programming problems in Haskell by memoization of hylomorphisms" by D.Llorens and J.M. Vilar. Software: Practice and Experience (ISSN:1097-024X). 2020; 50: 2193– 2211. https://doi.org/10.1002/spe.2887 The core ideas are: * Using hylomorphisms as generic control flow mechanism. * Adding memoization to avoid recomputation of intermediate results. * Modelling the composition of solutions by means of semirings. * Using dispatch by result type as a simple way to decide the kind of answer desired (e.g. the best solution, the score of that solution, or the total number of solutions.) A problem is described by an instance of 'DPProblem' and solved by using 'dpSolve'. See the documentation of 'HyloDP.Base' for an example. -} module HyloDP ( -- * Exported modules -- **The DP problem solver module HyloDP.Base, -- **Semirings for different solution types module HyloDP.Semiring ) where import HyloDP.Base import HyloDP.Semiring