Functionality to decorate R6 Distributions (and child classes) with extra methods.

decorate(distribution, decorators, ...)

## Arguments

distribution ([Distribution]) Distribution to decorate. (character()) Vector of DistributionDecorator names to decorate the Distribution with. ANY Extra arguments passed down to specific decorators.

## Value

Returns a Distribution with additional methods from the chosen DistributionDecorator.

## Details

Decorating is the process of adding methods to classes that are not part of the core interface (Gamma et al. 1994). Use listDecorators to see which decorators are currently available. The primary use-cases are to add numeric results when analytic ones are missing, to add complex modelling functions and to impute missing d/p/q/r functions.

## References

Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. 1994. “Design Patterns: Elements of Reusable Object-Oriented Software.” Addison-Wesley.

listDecorators() for available decorators and DistributionDecorator for the parent class.
B <- Binomial$new() decorate(B, "CoreStatistics") #> Binomial is now decorated with CoreStatistics#> Binom(prob = 0.5, qprob = 0.5, size = 10) E <- Exponential$new()
#> Exponential is now decorated with CoreStatistics, ExoticStatistics#> Exp(rate = 1, scale = 1)