  We spell out the paradigm of exact conditioning as an intuitive and powerful
way of conditioning on observations in probabilistic programs. This is
contrasted with likelihood-based scoring known from languages such as Stan. We
study exact conditioning in the cases of discrete and Gaussian probability,
presenting prototypical languages for each case and giving semantics to them.
We make use of categorical probability (namely Markov and CD categories) to
give a general account of exact conditioning which avoids limits and measure
theory, instead focusing on restructuring dataflow and program equations. The
correspondence between such categories and a class of programming languages is
made precise by defining the internal language of a CD category.
