packages feed

monad-bayes-1.0.0: monad-bayes.cabal

cabal-version:      2.0
name:               monad-bayes
version:            1.0.0
license:            MIT
license-file:       LICENSE.md
copyright:          2015-2020 Adam Scibior
maintainer:         dominic.steinitz@tweag.io
author:             Adam Scibior <adscib@gmail.com>
stability:          experimental
tested-with:        GHC ==9.2.2
homepage:           http://github.com/tweag/monad-bayes#readme
bug-reports:        https://github.com/tweag/monad-bayes/issues
synopsis:           A library for probabilistic programming.
description:
  A library for probabilistic programming using probability monads. The
  emphasis is on composition of inference algorithms implemented in
  terms of monad transformers.

category:           Statistics
build-type:         Simple
extra-source-files: CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/tweag/monad-bayes.git

flag dev
  description: Turn on development settings.
  default:     False
  manual:      True

library
  exposed-modules:
    Control.Monad.Bayes.Class
    Control.Monad.Bayes.Density.Free
    Control.Monad.Bayes.Density.State
    Control.Monad.Bayes.Enumerator
    Control.Monad.Bayes.Inference.Lazy.MH
    Control.Monad.Bayes.Inference.Lazy.WIS
    Control.Monad.Bayes.Inference.MCMC
    Control.Monad.Bayes.Inference.PMMH
    Control.Monad.Bayes.Inference.RMSMC
    Control.Monad.Bayes.Inference.SMC
    Control.Monad.Bayes.Inference.SMC2
    Control.Monad.Bayes.Inference.TUI
    Control.Monad.Bayes.Integrator
    Control.Monad.Bayes.Population
    Control.Monad.Bayes.Sampler.Lazy
    Control.Monad.Bayes.Sampler.Strict
    Control.Monad.Bayes.Sequential.Coroutine
    Control.Monad.Bayes.Traced
    Control.Monad.Bayes.Traced.Basic
    Control.Monad.Bayes.Traced.Dynamic
    Control.Monad.Bayes.Traced.Static
    Control.Monad.Bayes.Weighted
    Math.Integrators.StormerVerlet

  hs-source-dirs:     src
  other-modules:      Control.Monad.Bayes.Traced.Common
  default-language:   Haskell2010
  build-depends:
      base             >=4.11   && <4.17
    , brick
    , containers       >=0.5.10 && <0.7
    , foldl
    , free             >=5.0.2  && <5.2
    , histogram-fill
    , ieee754          ^>=0.8.0
    , integration
    , lens
    , linear
    , log-domain       >=0.12   && <0.14
    , math-functions   >=0.2.1  && <0.4
    , matrix
    , monad-coroutine  ^>=0.9.0
    , monad-extras
    , mtl              ^>=2.2.2
    , mwc-random       >=0.13.6 && <0.16
    , pipes
    , pretty-simple
    , primitive
    , random
    , safe             ^>=0.3.17
    , scientific
    , statistics       >=0.14.0 && <0.17
    , text
    , vector           ^>=0.12.0
    , vty

  default-extensions:
    BlockArguments
    FlexibleContexts
    ImportQualifiedPost
    LambdaCase
    OverloadedStrings
    TupleSections

  if flag(dev)
    ghc-options:
      -O2 -Wall -Wno-missing-local-signatures -Wno-trustworthy-safe
      -Wno-missing-import-lists -Wno-implicit-prelude
      -Wno-monomorphism-restriction

  else
    ghc-options: -Wall

executable example
  main-is:            Single.hs
  hs-source-dirs:     benchmark models
  other-modules:
    Dice
    HMM
    LDA
    LogReg

  default-language:   Haskell2010
  build-depends:
      base
    , containers
    , log-domain
    , math-functions
    , monad-bayes
    , mwc-random
    , optparse-applicative
    , pipes
    , pretty-simple
    , random
    , text
    , time
    , vector

  if flag(dev)
    ghc-options:
      -O2 -Wall -Wcompat -Wincomplete-record-updates
      -Wincomplete-uni-patterns -Wnoncanonical-monad-instances

  else
    ghc-options: -Wall

  default-extensions:
    BlockArguments
    FlexibleContexts
    ImportQualifiedPost
    LambdaCase
    OverloadedStrings
    TupleSections

test-suite monad-bayes-test
  type:               exitcode-stdio-1.0
  main-is:            Spec.hs
  hs-source-dirs:     test models
  other-modules:
    BetaBin
    ConjugatePriors
    HMM
    Sprinkler
    TestAdvanced
    TestDistribution
    TestEnumerator
    TestInference
    TestIntegrator
    TestPipes
    TestPopulation
    TestSampler
    TestSequential
    TestStormerVerlet
    TestWeighted

  default-language:   Haskell2010
  build-depends:
      base
    , containers
    , foldl
    , hspec
    , ieee754
    , lens
    , linear
    , log-domain
    , math-functions
    , matrix
    , monad-bayes
    , mtl
    , mwc-random
    , pipes
    , pretty-simple
    , profunctors
    , QuickCheck
    , random
    , statistics
    , text
    , transformers
    , vector

  if flag(dev)
    ghc-options:
      -Wall -Wno-missing-local-signatures -Wno-unsafe
      -Wno-missing-import-lists -Wno-implicit-prelude

  else
    ghc-options: -Wall

  default-extensions:
    BlockArguments
    FlexibleContexts
    ImportQualifiedPost
    LambdaCase
    OverloadedStrings
    TupleSections

benchmark ssm-bench
  type:             exitcode-stdio-1.0
  main-is:          SSM.hs
  hs-source-dirs:   models benchmark
  other-modules:    NonlinearSSM
  default-language: Haskell2010
  build-depends:
      base
    , monad-bayes
    , pretty-simple
    , random

benchmark speed-bench
  type:               exitcode-stdio-1.0
  main-is:            Speed.hs
  hs-source-dirs:     models benchmark
  other-modules:
    HMM
    LDA
    LogReg

  default-language:   Haskell2010
  build-depends:
      abstract-par
    , base
    , containers
    , criterion
    , log-domain
    , monad-bayes
    , mwc-random
    , pipes
    , pretty-simple
    , process
    , random
    , text
    , typed-process
    , vector

  if flag(dev)
    ghc-options:
      -Wall -Wno-missing-local-signatures -Wno-unsafe
      -Wno-missing-import-lists -Wno-implicit-prelude

  else
    ghc-options: -Wall

  default-extensions:
    BlockArguments
    FlexibleContexts
    ImportQualifiedPost
    LambdaCase
    OverloadedStrings
    TupleSections