code: function(mu, sigma) {
           return {
              d: function(x, logp) { return dnorm(mu, sigma, logp)(x); },
              p: function(q, lowerTail, logp) {
                 return pnorm(mu, sigma, lowerTail, logp)(q);
              },
              q: function(p, lowerTail, logp) {
                 return qnorm(mu, sigma, lowerTail, logp)(p);
              },
              r: function() { return rnorm(mu, sigma)(); }
           };
        }
docs: Returns an object representing a normal distribution, with properties `d`, `p`, `q`, `r`.
  ```
  normal(mu, sigma).d(x, logp)            // same as dnorm(mu, sigma, logp)(x)
  normal(mu, sigma).p(x, lowerTail, logp) // same as pnorm(mu, sigma, lowerTail, logp)(x)
  normal(mu, sigma).q(x, lowerTail, logp) // same as qnorm(mu, sigma, lowerTail, logp)(x)
  normal(mu, sigma).r()                   // same as rnorm(mu, sigma)()
  ```
  @memberof normal