This paper introduces a categorical framework to study the exact and approximate semantics of probabilistic programs. We construct a dagger symmetric monoidal category of Borel kernels where the dagger-structure is given by Bayesian inversion. We show functorial bridges between this category and categories of Banach lattices which formalize the move from kernel-based semantics to predicate transformer (backward) or state transformer (forward) semantics. These bridges are related by natural transformations, and we show in particular that the Radon-Nikodym and Riesz representation theorems -two pillars of probability theory -define natural transformations.With the mathematical infrastructure in place, we present a generic and endogenous approach to approximating kernels on standard Borel spaces which exploits the involutive structure of our category of kernels. The approximation can be formulated in several equivalent ways by using the functorial bridges and natural transformations described above. Finally, we show that for sensible discretization schemes, every Borel kernel can be approximated by kernels on finite spaces, and that these approximations converge for a natural choice of topology.We illustrate the theory by showing two examples of how approximation can effectively be used in practice: Bayesian inference and the Kleene * operation of ProbNetKAT. . We introduce the category BL σ of Banach lattices and σorder continuous positive operators as well as the Köthe dual functor (−) σ : BL op σ → BL σ ( §3). These will play a central role in studying convergence of our approximation schemes. 3. We provide the first 2 categorical understanding of the Radon-Nikodym and the Riesz representation theorems. These arise as natural transformations between two functors relating kernels and Banach lattices ( §4). 4. We show how the †-structure of Krn can be exploited to approximate kernels by averaging ( §5). Due to an important structural feature of Krn (Th. 1) every kernel in Krn can be approximated by kernels on finite spaces. 5. We show a natural class of approximations schemes where the sequence of approximating kernels converges to the kernel to be approximated. The notion of convergence is given naturally by moving to BL σ and considering convergence in the Strong Operator Topology ( §6). 6. We apply our theory of kernel approximations to two practical applications ( §7). First, we show how Bayesian inference can be performed approximately by showing that the †-operation commutes with taking approximations. Secondly, we consider the case of ProbNetKAT, a language developed in [14,22] to probabilistically reason about networks. ProbNetKAT includes a Kleene star operator (−) * with a complex semantics which has proved hard to approximate. We show that (−) * can be approximated, and that the approximation converges.