packages feed

ADPfusion-0.4.0.2: ADPfusion.cabal

name:           ADPfusion
version:        0.4.0.2
author:         Christian Hoener zu Siederdissen, 2011-2015
copyright:      Christian Hoener zu Siederdissen, 2011-2015
homepage:       http://www.bioinf.uni-leipzig.de/Software/gADP/
maintainer:     choener@bioinf.uni-leipzig.de
category:       Algorithms, Data Structures, Bioinformatics, Formal Languages
license:        BSD3
license-file:   LICENSE
build-type:     Simple
stability:      experimental
cabal-version:  >= 1.10.0
tested-with:    GHC == 7.8.4, GHC == 7.10.1
synopsis:       Efficient, high-level dynamic programming.
description:
                ADPfusion combines stream-fusion (using the stream interface
                provided by the vector library) and type-level programming to
                provide highly efficient dynamic programming combinators.
                .
                ADPfusion allows writing dynamic programs for single- and
                multi-tape problems. Inputs can be sequences, or sets. And new
                input types can be defined, without having to rewrite this
                library thanks to the open-world assumption of ADPfusion.
                .
                The library provides the machinery for Outside and Ensemble
                algorithms as well. Ensemble algorithms combine Inside and
                Outside calculations.
                .
                The homepage provides a number of tutorial-style examples, with
                linear and context-free grammars over sequence and set inputs.
                .
                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
                <http://doi.acm.org/10.1145/2364527.2364559> preprint: <http://www.tbi.univie.ac.at/newpapers/pdfs/TBI-p-2012-2.pdf>
                @
                .
                @
                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.
                <http://dl.acm.org/citation.cfm?doid=2543728.2543736>
                @
                .
                @
                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.
                <http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6819790>
                @
                .
                @
                Christian Höner zu Siederdissen, Sonja J. Prohaska, and Peter F. Stadler.
                Algebraic Dynamic Programming over General Data Structures.
                2015. submitted.
                @
                .



Extra-Source-Files:
  README.md
  changelog.md



flag examples
  description:  build the examples
  default:      False
  manual:       True

flag llvm
  description:  build using LLVM
  default:      False
  manual:       True

flag debug
  description:  dump intermediate Core files
  default:      False
  manual:       True



library

  build-depends: base               >= 4.7      && < 4.9
               , bits               == 0.4.*
               , mmorph             == 1.0.*
               , monad-primitive    == 0.1
               , mtl                == 2.*
               , OrderedBits        == 0.0.0.*
               , primitive          >= 0.5.4    && < 0.7
               , PrimitiveArray     == 0.6.0.*
               , QuickCheck         >= 2.7      && < 2.9
               , strict             == 0.3.*
               , template-haskell   == 2.*
               , transformers       >= 0.3      && < 0.5
               , tuple              == 0.3.*
               , vector             == 0.10.*

  exposed-modules:
    ADP.Fusion
    ADP.Fusion.Apply
    ADP.Fusion.Base
    ADP.Fusion.Base.Classes
    ADP.Fusion.Base.Multi
    ADP.Fusion.Base.Point
    ADP.Fusion.Base.Set
    ADP.Fusion.Base.Subword
    ADP.Fusion.Term
    ADP.Fusion.Term.Chr
    ADP.Fusion.Term.Chr.Point
    ADP.Fusion.Term.Chr.Subword
    ADP.Fusion.Term.Chr.Type
    ADP.Fusion.Term.Edge
    ADP.Fusion.Term.Edge.Set
    ADP.Fusion.Term.Edge.Type
    ADP.Fusion.Term.Epsilon
    ADP.Fusion.Term.Epsilon.Point
    ADP.Fusion.Term.Epsilon.Subword
    ADP.Fusion.Term.Epsilon.Type
    ADP.Fusion.Term.Deletion
    ADP.Fusion.Term.Deletion.Point
    ADP.Fusion.Term.Deletion.Type
    ADP.Fusion.Term.PeekIndex
    ADP.Fusion.Term.PeekIndex.Subword
    ADP.Fusion.Term.PeekIndex.Type
    ADP.Fusion.Term.Strng
    ADP.Fusion.Term.Strng.Point
    ADP.Fusion.Term.Strng.Type
    ADP.Fusion.SynVar
    ADP.Fusion.SynVar.Array
    ADP.Fusion.SynVar.Array.Point
    ADP.Fusion.SynVar.Array.Set
    ADP.Fusion.SynVar.Array.Subword
    ADP.Fusion.SynVar.Array.Type
    ADP.Fusion.SynVar.Axiom
    ADP.Fusion.SynVar.Backtrack
    ADP.Fusion.SynVar.Fill
    ADP.Fusion.SynVar.Indices
    ADP.Fusion.SynVar.Recursive
    ADP.Fusion.SynVar.Recursive.Point
    ADP.Fusion.SynVar.Recursive.Subword
    ADP.Fusion.SynVar.Recursive.Type
    ADP.Fusion.TH
    ADP.Fusion.TH.Backtrack
    ADP.Fusion.TH.Common
    ADP.Fusion.QuickCheck.Common
    ADP.Fusion.QuickCheck.Point
    ADP.Fusion.QuickCheck.Set
    ADP.Fusion.QuickCheck.Subword

  default-extensions: BangPatterns
                    , DefaultSignatures
                    , FlexibleContexts
                    , FlexibleInstances
                    , GADTs
                    , MultiParamTypeClasses
                    , RankNTypes
                    , StandaloneDeriving
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
                    , TypeSynonymInstances
                    , UndecidableInstances

  default-language:
    Haskell2010
  ghc-options:
    -O2 -funbox-strict-fields



-- Very simple two-sequence alignment.

executable NeedlemanWunsch

  if flag(examples)
    buildable:
      True
    build-depends:  base
                 ,  ADPfusion
                 ,  PrimitiveArray
                 ,  template-haskell
                 ,  vector
  else
    buildable:
      False

  hs-source-dirs:
    src
  main-is:
    NeedlemanWunsch.hs
  default-language:
    Haskell2010
  default-extensions: BangPatterns
                    , FlexibleContexts
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , RecordWildCards
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
  ghc-options:
    -O2
    -funbox-strict-fields
    -funfolding-use-threshold1000
    -funfolding-keeness-factor1000
  if flag(llvm)
    ghc-options:
      -fllvm
      -optlo-O3 -optlo-std-compile-opts
      -fllvm-tbaa
  if flag(debug)
    ghc-options:
      -ddump-to-file
      -ddump-simpl
      -dsuppress-all



-- Basic RNA secondary structure folding

executable Nussinov

  if flag(examples)
    buildable:
      True
    build-depends:  base
                 ,  ADPfusion
                 ,  PrimitiveArray
                 ,  template-haskell
                 ,  vector
  else
    buildable:
      False

  hs-source-dirs:
    src
  main-is:
    Nussinov.hs
  default-language:
    Haskell2010
  default-extensions: BangPatterns
                    , FlexibleContexts
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , RecordWildCards
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
  ghc-options:
    -O2
    -funbox-strict-fields
    -funfolding-use-threshold1000
    -funfolding-keeness-factor1000
  if flag(llvm)
    ghc-options:
      -fllvm
      -optlo-O3 -optlo-std-compile-opts
      -fllvm-tbaa
  if flag(debug)
    ghc-options:
      -ddump-to-file
      -ddump-simpl
      -dsuppress-all



-- Basic RNA secondary structure folding with partition function calculations

executable PartNussinov

  if flag(examples)
    buildable:
      True
    build-depends:  base
                 ,  ADPfusion
                 ,  log-domain        == 0.10.*
                 ,  PrimitiveArray
                 ,  template-haskell
                 ,  vector
  else
    buildable:
      False

  hs-source-dirs:
    src
  main-is:
    PartNussinov.hs
  default-language:
    Haskell2010
  default-extensions: BangPatterns
                    , FlexibleContexts
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , RecordWildCards
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
  ghc-options:
    -O2
    -funbox-strict-fields
    -funfolding-use-threshold1000
    -funfolding-keeness-factor1000
  if flag(llvm)
    ghc-options:
      -fllvm
      -optlo-O3 -optlo-std-compile-opts
      -fllvm-tbaa
  if flag(debug)
    ghc-options:
      -ddump-to-file
      -ddump-simpl
      -dsuppress-all



executable Durbin

  if flag(examples)
    buildable:
      True
    build-depends:  base
                 ,  ADPfusion
                 ,  PrimitiveArray
                 ,  template-haskell
                 ,  vector
  else
    buildable:
      False

  hs-source-dirs:
    src
  main-is:
    Durbin.hs
  default-language:
    Haskell2010
  default-extensions: BangPatterns
                    , FlexibleContexts
                    , FlexibleInstances
                    , MultiParamTypeClasses
                    , RecordWildCards
                    , TemplateHaskell
                    , TypeFamilies
                    , TypeOperators
  ghc-options:
    -O2
    -fcpr-off
    -funbox-strict-fields
    -funfolding-use-threshold1000
    -funfolding-keeness-factor1000
  if flag(llvm)
    ghc-options:
      -fllvm
      -optlo-O3 -optlo-std-compile-opts
      -fllvm-tbaa
  if flag(debug)
    ghc-options:
      -ddump-to-file
      -ddump-simpl
      -dsuppress-all



test-suite properties
  type:
    exitcode-stdio-1.0
  main-is:
    properties.hs
  ghc-options:
    -threaded -rtsopts -with-rtsopts=-N
  hs-source-dirs:
    tests
  default-language:
    Haskell2010
  default-extensions: TemplateHaskell
  build-depends: base
               , ADPfusion
               , QuickCheck
               , test-framework               >= 0.8  && < 0.9
               , test-framework-quickcheck2   >= 0.3  && < 0.4
               , test-framework-th            >= 0.2  && < 0.3



source-repository head
  type: git
  location: git://github.com/choener/ADPfusion