content: -----------------------------------------------------------------------------
  
  -----------------------------------------------------------------------------
  
  {- |
  Module     : LAoP.Dist
  Copyright  : (c) Armando Santos 2019-2020
  Maintainer : armandoifsantos@gmail.com
  Stability  : experimental
  
  __LAoP__ is a library for algebraic (inductive) construction and manipulation of matrices
  in Haskell. See <https://github.com/bolt12/master-thesis my Msc Thesis> for the
  motivation behind the library, the underlying theory, and implementation details.
  
  This module exports a type synonym 'Dist'
  that represents a stochastic distribution
  matrix and several distribution construction
  functions.
  -}
  module LAoP.Dist (
    -- | If the sum of the rows of a column matrix
    -- is equal to 1 then this stochastic matrix
    -- can be seen as a probability distribution.
    --
    --
    -- This module is still experimental but it's
    -- already possible to model probabilistic programming
    -- problems with it. Import 'Matrix.Nat' or 'Matrix.Type'
    -- to access LAoP matrix combinators and then all you have
    -- to do is to define your sample space, either by creating a new data
    -- type or by abstracting it out via 'Natural'.
    --
    -- Write manipulation functions and promote them to matrices via
    -- 'fromF' or 'fromF'' and you're good to go!
  
    -- * 'Dist' and 'Prob' type synonyms
    Dist (..),
    Prob,
  
    -- * Constraint type synonyms
    Countable,
    CountableN,
    CountableDimsN,
    FLN,
    Liftable,
    TrivialP,
  
    -- * Functor instance equivalent functions
    fmapD,
  
    -- * Applicative equivalent functions
    unitD,
    multD,
  
    -- * Selective equivalent functions
    selectD,
    branchD,
    ifD,
  
    -- * Monad equivalent functions
    returnD,
    bindD,
  
    -- * Distribution construction functions
    choose,
    shape,
    linear,
    uniform,
    negExp,
    normal,
  
    -- * Converto to list of pairs
    toValues,
  
    -- * Pretty print distribution
    prettyDist,
    prettyPrintDist,
  )
  where
  
  import LAoP.Dist.Internal
  