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

decorate(distribution, decorators)

## Arguments

distribution distribution to decorate list of decorators

## Value

Returns a decorated R6 object inheriting from class SDistribution with the methods listed from one of the available decorators added to the SDistribution methods.

## 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.

The decorators parameter should either be a list of decorator classes (i.e. not as strings) or a single decorator class; see examples.

## References

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

B <- Binomial$new() decorate(B, CoreStatistics) #> B is now decorated with CoreStatistics #> Binom(prob = 0.5, size = 10) E <- Exponential$new() decorate(E, list(CoreStatistics, ExoticStatistics))