{-# LANGUAGE TypeFamilies, KindSignatures, ConstraintKinds #-} module BayesStack.Core.Types ( Probability , HasLikelihood(..) , FullConditionable(..) ) where import GHC.Prim (Constraint) import Data.Number.LogFloat type Probability = LogFloat class HasLikelihood p where type LContext p a :: Constraint type LContext p a = () likelihood :: LContext p a => p a -> Probability prob :: LContext p a => p a -> a -> Probability -- | A distribution for which a full conditional factor can be produced class FullConditionable p where type FCContext p a :: Constraint type FCContext p a = () sampleProb :: FCContext p a => p a -> a -> Double