Posterior Predictive
The posterior predictive is implemented as the composition of posterior and marginalization operations.
Here are some examples...
Normal Normal
λ> (def data (sample (normal 3 1) 100))
#'λ/data
λ> (posterior-predictive data (normal :mu 1) (normal 0 5))
#distributions.core.Normal{:mean 2.833833314407506, :variance 506/501}
Poisson Gamma
λ> (def data (sample (poisson 10) 100))
#'λ/data
λ> (posterior-predictive data (poisson :rate) (gamma 2 0.1))
#distributions.core.NegativeBinomial{:failures 962, :probability 0.990108803165183}
Dirichlet Process
λ> (posterior-predictive [1.1 2.2 2.2] :G (dirichlet-process 10 (normal 0 1)))
#distributions.core.Mixture{:components [#distributions.core.DiscreteReal{:locations (1.1 2.2), :probabilities (1/3 2/3)} #distributions.core.Normal{:mean 0, :variance 1}], :probabilities (1/11 10/11)}