  distr6 is an object-oriented (OO) probability distributions interface
leveraging the extensibility and scalability of R6, and the speed and
efficiency of Rcpp. Over 50 probability distributions are currently implemented
in the package with `core' methods including density, distribution, and
generating functions, and more `exotic' ones including hazards and distribution
function anti-derivatives. In addition to simple distributions, distr6 supports
compositions such as truncation, mixtures, and product distributions. This
paper presents the core functionality of the package and demonstrates examples
for key use-cases. In addition this paper provides a critical review of the
object-oriented programming paradigms in R and describes some novel
implementations for design patterns and core object-oriented features
introduced by the package for supporting distr6 components.
