From e522dde8debbe0fd2ea448e754fd74078b61061d Mon Sep 17 00:00:00 2001
From: Liam Healy <liam@thinkpad.local>
Date: Sun, 17 Jan 2010 10:47:43 -0500
Subject: [PATCH] Random number generator type symbols in keyword package

---
 basis-splines.lisp                            |  4 +--
 random/bernoulli.lisp                         |  9 +++---
 random/beta.lisp                              |  9 +++---
 random/cauchy.lisp                            |  9 +++---
 random/chi-squared.lisp                       |  9 +++---
 random/dirichlet.lisp                         |  9 +++---
 random/discrete.lisp                          |  7 ++---
 random/exponential-power.lisp                 |  9 +++---
 random/exponential.lisp                       |  9 +++---
 random/fdist.lisp                             |  9 +++---
 random/flat.lisp                              |  9 +++---
 random/gamma.lisp                             | 14 ++++-----
 random/gaussian-bivariate.lisp                |  9 +++---
 random/gaussian-tail.lisp                     | 12 +++----
 random/gaussian.lisp                          | 31 ++++++++-----------
 random/generators.lisp                        | 13 +++-----
 random/geometric.lisp                         |  9 +++---
 random/gumbel1.lisp                           |  9 +++---
 random/gumbel2.lisp                           |  9 +++---
 random/hypergeometric.lisp                    |  9 +++---
 random/landau.lisp                            |  9 +++---
 random/laplace.lisp                           |  9 +++---
 random/levy.lisp                              | 12 +++----
 random/logarithmic.lisp                       |  9 +++---
 random/logistic.lisp                          |  9 +++---
 random/lognormal.lisp                         |  9 +++---
 random/multinomial.lisp                       | 11 +++----
 random/negative-binomial.lisp                 | 16 +++++-----
 random/pareto.lisp                            |  9 +++---
 random/poisson.lisp                           |  9 +++---
 random/rayleigh-tail.lisp                     |  9 +++---
 random/rayleigh.lisp                          |  9 +++---
 random/shuffling-sampling.lisp                | 28 +++++++----------
 random/spherical-vector.lisp                  | 20 +++++-------
 random/tdist.lisp                             |  9 +++---
 random/weibull.lisp                           |  9 +++---
 solve-minimize-fit/linear-least-squares.lisp  |  4 +--
 .../nonlinear-least-squares.lisp              |  4 +--
 tests/bernoulli.lisp                          |  2 +-
 tests/beta.lisp                               |  2 +-
 tests/cauchy.lisp                             |  2 +-
 tests/chi-squared.lisp                        |  2 +-
 tests/dirichlet.lisp                          |  2 +-
 tests/discrete.lisp                           |  2 +-
 tests/exponential-power.lisp                  |  2 +-
 tests/exponential.lisp                        |  2 +-
 tests/fdist.lisp                              |  2 +-
 tests/flat.lisp                               |  2 +-
 tests/gamma-randist.lisp                      |  4 +--
 tests/gaussian-bivariate.lisp                 |  2 +-
 tests/gaussian-tail.lisp                      |  4 +--
 tests/gaussian.lisp                           |  4 +--
 tests/geometric.lisp                          |  2 +-
 tests/gumbel1.lisp                            |  2 +-
 tests/gumbel2.lisp                            |  2 +-
 tests/hypergeometric-randist.lisp             |  2 +-
 tests/landau.lisp                             |  2 +-
 tests/laplace.lisp                            |  2 +-
 tests/levy.lisp                               |  4 +--
 tests/logarithmic.lisp                        |  2 +-
 tests/logistic.lisp                           |  2 +-
 tests/lognormal.lisp                          |  2 +-
 tests/multinomial.lisp                        |  2 +-
 tests/negative-binomial.lisp                  |  4 +--
 tests/pareto.lisp                             |  2 +-
 tests/poisson.lisp                            |  2 +-
 tests/random-number-generators.lisp           |  4 +--
 tests/rayleigh-tail.lisp                      |  2 +-
 tests/rayleigh.lisp                           |  2 +-
 tests/shuffling-sampling.lisp                 |  6 ++--
 tests/spherical-vector.lisp                   |  6 ++--
 tests/tdist.lisp                              |  2 +-
 tests/weibull.lisp                            |  2 +-
 73 files changed, 220 insertions(+), 271 deletions(-)

diff --git a/basis-splines.lisp b/basis-splines.lisp
index b2a05f48..d108121e 100644
--- a/basis-splines.lisp
+++ b/basis-splines.lisp
@@ -1,6 +1,6 @@
 ;; Basis splines.
 ;; Liam Healy 2008-02-18 14:43:20EST basis-splines.lisp
-;; Time-stamp: <2009-12-27 09:42:10EST basis-splines.lisp>
+;; Time-stamp: <2010-01-17 10:41:03EST basis-splines.lisp>
 ;;
 ;; Copyright 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -124,7 +124,7 @@
     (dotimes (i ndata)
       (let* ((xi (coerce (* i (/ 15 (1- ndata))) 'double-float))
 	     (yi (+ (* (cos xi) (exp (* -0.1d0 xi)))
-		    (sample rng 'gaussian :sigma sigma))))
+		    (sample rng :gaussian :sigma sigma))))
 	(setf (maref x i) xi
 	      (maref y i) yi
 	      (maref w i) (/ (expt sigma 2)))))
diff --git a/random/bernoulli.lisp b/random/bernoulli.lisp
index e3259a7e..61c8305a 100644
--- a/random/bernoulli.lisp
+++ b/random/bernoulli.lisp
@@ -1,6 +1,6 @@
 ;; Bernoulli distribution
 ;; Liam Healy, Sat Nov 25 2006 - 16:59
-;; Time-stamp: <2009-12-27 10:00:04EST bernoulli.lisp>
+;; Time-stamp: <2010-01-17 10:06:06EST bernoulli.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -20,9 +20,8 @@
 
 (in-package :gsl)
 
-(export 'bernoulli)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'bernoulli))
+    ((generator random-number-generator) (type (eql :bernoulli))
      &key probability)
   "gsl_ran_bernoulli"
   (((mpointer generator) :pointer) (probability :double))
@@ -41,12 +40,12 @@
   :documentation			; FDL
   "The probability p(k) of obtaining
   k from a Bernoulli distribution with probability parameter
-  p, using the formula given in #'bernoulli.")
+  p, using the formula given in #'sample :bernoulli.")
 
 ;;; Examples and unit test
 (save-test bernoulli
   (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'bernoulli :probability 0.5d0)))
+	   (sample rng :bernoulli :probability 0.5d0)))
   (bernoulli-pdf 0 0.5d0))
diff --git a/random/beta.lisp b/random/beta.lisp
index e63ab29b..341a52b8 100644
--- a/random/beta.lisp
+++ b/random/beta.lisp
@@ -1,6 +1,6 @@
 ;; Beta distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:00:04EST beta.lisp>
+;; Time-stamp: <2010-01-17 10:05:21EST beta.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -20,9 +20,8 @@
 
 (in-package :gsl)
 
-(export 'beta)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'beta)) &key a b)
+    ((generator random-number-generator) (type (eql :beta)) &key a b)
   "gsl_ran_beta"
   (((mpointer generator) :pointer) (a :double) (b :double))
   :definition :method
@@ -38,7 +37,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a beta distribution with parameters a and b, using the
-   formula given in #'beta.")
+   formula given in #'sample :beta.")
 
 (defmfun beta-P (x a b)
   "gsl_cdf_beta_P" ((x :double) (a :double) (b :double))
@@ -73,7 +72,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'beta :a 1.0d0 :b 2.0d0)))
+	    (sample rng :beta :a 1.0d0 :b 2.0d0)))
   (beta-pdf 0.1d0 1.0d0 2.0d0)
   (beta-P 0.1d0 1.0d0 2.0d0)
   (beta-Q 0.1d0 1.0d0 2.0d0)
diff --git a/random/cauchy.lisp b/random/cauchy.lisp
index 88913a7e..f754997e 100644
--- a/random/cauchy.lisp
+++ b/random/cauchy.lisp
@@ -1,6 +1,6 @@
 ;; Cauchy distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:00:03EST cauchy.lisp>
+;; Time-stamp: <2010-01-17 10:05:32EST cauchy.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'cauchy)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'cauchy)) &key a)
+    ((generator random-number-generator) (type (eql :cauchy)) &key a)
   "gsl_ran_cauchy"
   (((mpointer generator) :pointer) (a :double))
   :definition :method
@@ -44,7 +43,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a Cauchy distribution with scale parameter a, using the formula
-   given for #'cauchy.")
+   given for #'sample :cauchy.")
 
 (defmfun cauchy-P (x a)
   "gsl_cdf_cauchy_P" ((x :double) (a :double))
@@ -79,7 +78,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'cauchy :a 10.0d0)))
+	    (sample rng :cauchy :a 10.0d0)))
   (cauchy-pdf 0.0d0 10.0d0)
   (cauchy-P 1.0d0 2.0d0)
   (cauchy-Q 1.0d0 2.0d0)
diff --git a/random/chi-squared.lisp b/random/chi-squared.lisp
index 6f2ed09f..17b32a34 100644
--- a/random/chi-squared.lisp
+++ b/random/chi-squared.lisp
@@ -1,6 +1,6 @@
 ;; Chi-squared distribution
 ;; Liam Healy, Sat Oct  7 2006 - 16:13
-;; Time-stamp: <2009-12-27 10:00:03EST chi-squared.lisp>
+;; Time-stamp: <2010-01-17 10:07:11EST chi-squared.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'chi-squared)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'chi-squared)) &key nu)
+    ((generator random-number-generator) (type (eql :chi-squared)) &key nu)
   "gsl_ran_chisq"
   (((mpointer generator) :pointer) (nu :double))
   :definition :method
@@ -42,7 +41,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a chi-squared distribution with nu degrees of freedom, using
-   the formula given in #'chi-squared.")
+   the formula given in #'sample :chi-squared.")
 
 (defmfun chi-squared-P (x nu)
   "gsl_cdf_chisq_P" ((x :double) (nu :double))
@@ -77,7 +76,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'chi-squared :nu 10.0d0)))
+	    (sample rng :chi-squared :nu 10.0d0)))
   (chi-squared-pdf 0.5d0 1.0d0)
   (chi-squared-P 0.5d0 1.0d0)
   (chi-squared-Q 0.5d0 1.0d0)
diff --git a/random/dirichlet.lisp b/random/dirichlet.lisp
index 1618e486..4ebf502f 100644
--- a/random/dirichlet.lisp
+++ b/random/dirichlet.lisp
@@ -1,6 +1,6 @@
 ;; Dirichlet distribution
 ;; Liam Healy, Sun Oct 29 2006
-;; Time-stamp: <2009-12-27 10:00:02EST dirichlet.lisp>
+;; Time-stamp: <2010-01-17 10:09:21EST dirichlet.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'dirichlet)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'dirichlet))
+    ((generator random-number-generator) (type (eql :dirichlet))
      &key alpha (theta (vdf (dim0 alpha))))
   "gsl_ran_dirichlet"
   (((mpointer generator) :pointer)
@@ -64,7 +63,7 @@
   :documentation			; FDL
   "The probability density p(\theta_1, ... , \theta_K)
    at theta[K] for a Dirichlet distribution with parameters 
-   alpha[K], using the formula given for #'dirichlet.")
+   alpha[K], using the formula given for #'sample :dirichlet.")
 
 (defmfun dirichlet-log-pdf (alpha theta)
   "gsl_ran_dirichlet_lnpdf"
@@ -84,7 +83,7 @@
 (save-test dirichlet
  (let ((rng (make-random-number-generator +mt19937+ 0))
        (alpha #m(1.0d0 2.0d0 3.0d0 4.0d0)))
-   (cl-array (sample rng 'dirichlet :alpha alpha)))
+   (cl-array (sample rng :dirichlet :alpha alpha)))
  (let ((alpha #m(1.0d0 2.0d0 3.0d0 4.0d0))
        (theta #m(1.0d0 2.0d0 3.0d0 4.0d0)))
    (dirichlet-pdf alpha theta))
diff --git a/random/discrete.lisp b/random/discrete.lisp
index c0dd53a8..e7451c73 100644
--- a/random/discrete.lisp
+++ b/random/discrete.lisp
@@ -1,6 +1,6 @@
 ;; Discrete random variables
 ;; Liam Healy, Sat Nov 11 2006 - 21:51
-;; Time-stamp: <2009-12-27 10:00:02EST discrete.lisp>
+;; Time-stamp: <2010-01-17 10:10:00EST discrete.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -35,9 +35,8 @@
   generally as ``weights'')---the preprocessor will normalize appropriately.
   This return value is used as an argument to #'discrete.")
 
-(export 'discrete)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'discrete))
+    ((generator random-number-generator) (type (eql :discrete))
      &key table)
   "gsl_ran_discrete"
   (((mpointer generator) :pointer) ((mpointer table) :pointer))
@@ -65,7 +64,7 @@
 	(rng (make-random-number-generator +mt19937+ 0)))
    (loop for i from 0 to 10
       collect
-      (sample rng 'discrete :table table)))
+      (sample rng :discrete :table table)))
  (let* ((probabilities #m(0.25d0 0.5d0 0.25d0))
 	(table (make-discrete-random probabilities)))
    (discrete-pdf 1 table)))
diff --git a/random/exponential-power.lisp b/random/exponential-power.lisp
index a5f48448..36f900f1 100644
--- a/random/exponential-power.lisp
+++ b/random/exponential-power.lisp
@@ -1,6 +1,6 @@
 ;; Exponential power distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:00:02EST exponential-power.lisp>
+;; Time-stamp: <2010-01-17 10:11:03EST exponential-power.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'exponential-power)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'exponential-power))
+    ((generator random-number-generator) (type (eql :exponential-power))
      &key a b)
   "gsl_ran_exppow"
   (((mpointer generator) :pointer) (a :double) (b :double))
@@ -45,7 +44,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for an exponential power distribution with scale parameter a
-   and exponent b, using the formula given for #'exponential-power.")
+   and exponent b, using the formula given for #'sample :exponential-power.")
 
 (defmfun exponential-power-P (x a b)
   "gsl_cdf_exppow_P" ((x :double) (a :double) (b :double))
@@ -68,7 +67,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'exponential-power :a 1.0d0 :b 2.0d0)))
+	    (sample rng :exponential-power :a 1.0d0 :b 2.0d0)))
   (exponential-power-pdf 0.0d0 1.0d0 2.0d0)
   (exponential-power-P 1.0d0 1.0d0 2.0d0)
   (exponential-power-Q 1.0d0 1.0d0 2.0d0))
diff --git a/random/exponential.lisp b/random/exponential.lisp
index 940497f2..cdd84eae 100644
--- a/random/exponential.lisp
+++ b/random/exponential.lisp
@@ -1,6 +1,6 @@
 ;; Exponential distribution
 ;; Liam Healy, Sat Sep  2 2006 - 19:04
-;; Time-stamp: <2009-12-27 10:00:02EST exponential.lisp>
+;; Time-stamp: <2010-01-17 10:12:00EST exponential.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'exponential)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'exponential))
+    ((generator random-number-generator) (type (eql :exponential))
      &key mu)
   "gsl_ran_exponential"
   (((mpointer generator) :pointer) (mu :double))
@@ -43,7 +42,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
   for an exponential distribution with mean mu, using the formula
-  given for exponential.")
+  given for #'sample :exponential.")
 
 (defmfun exponential-P (x mu)
   "gsl_cdf_exponential_P" ((x :double) (mu :double))
@@ -78,7 +77,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'exponential :mu 10.0d0)))
+	    (sample rng :exponential :mu 10.0d0)))
   (exponential-pdf 0.0d0 10.0d0)
   (exponential-p 1.0d0 2.0d0)
   (exponential-q 1.0d0 2.0d0)
diff --git a/random/fdist.lisp b/random/fdist.lisp
index cfd22c2f..dfbb5fc5 100644
--- a/random/fdist.lisp
+++ b/random/fdist.lisp
@@ -1,6 +1,6 @@
 ;; Fdist distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:00:01EST fdist.lisp>
+;; Time-stamp: <2010-01-17 10:12:32EST fdist.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'fdist)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'fdist)) &key nu1 nu2)
+    ((generator random-number-generator) (type (eql :fdist)) &key nu1 nu2)
   "gsl_ran_fdist"
   (((mpointer generator) :pointer) (nu1 :double) (nu2 :double))
   :definition :method
@@ -46,7 +45,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for an F-distribution with nu1 and nu2 degrees of freedom,
-   using the formula given #'fdist.")
+   using the formula given #'sample :fdist.")
 
 (defmfun fdist-P (x nu1 nu2)
   "gsl_cdf_fdist_P" ((x :double) (nu1 :double) (nu2 :double))
@@ -85,7 +84,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'fdist :nu1 1.0d0 :nu2 2.0d0)))
+	    (sample rng :fdist :nu1 1.0d0 :nu2 2.0d0)))
   (fdist-pdf 1.2d0 1.0d0 2.0d0)
   (fdist-P 1.2d0 1.0d0 2.0d0)
   (fdist-Q 1.2d0 1.0d0 2.0d0)
diff --git a/random/flat.lisp b/random/flat.lisp
index 4841913d..40cdf39a 100644
--- a/random/flat.lisp
+++ b/random/flat.lisp
@@ -1,6 +1,6 @@
 ;; Flat distribution
 ;; Liam Healy, Oct  7 2006
-;; Time-stamp: <2009-12-27 10:00:01EST flat.lisp>
+;; Time-stamp: <2010-01-17 10:13:12EST flat.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'flat)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'flat)) &key a b)
+    ((generator random-number-generator) (type (eql :flat)) &key a b)
   "gsl_ran_flat"
   (((mpointer generator) :pointer) (a :double) (b :double))
   :definition :method
@@ -41,7 +40,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a uniform distribution from a to b, using the formula
-   given for #'flat.")
+   given for #'sample :flat.")
 
 (defmfun flat-P (x a b)
   "gsl_cdf_flat_P" ((x :double) (a :double) (b :double))
@@ -76,7 +75,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'flat :a 1.0d0 :b 2.0d0)))
+	    (sample rng :flat :a 1.0d0 :b 2.0d0)))
   (flat-pdf 1.2d0 1.0d0 2.0d0)
   (flat-P 1.2d0 1.0d0 2.0d0)
   (flat-Q 1.2d0 1.0d0 2.0d0)
diff --git a/random/gamma.lisp b/random/gamma.lisp
index d02a4c40..f2898b69 100644
--- a/random/gamma.lisp
+++ b/random/gamma.lisp
@@ -1,6 +1,6 @@
 ;; Gamma distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:00:00EST gamma.lisp>
+;; Time-stamp: <2010-01-17 10:14:35EST gamma.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'gamma)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gamma)) &key a b)
+    ((generator random-number-generator) (type (eql :gamma)) &key a b)
   "gsl_ran_gamma"
   (((mpointer generator) :pointer) (a :double) (b :double))
   :definition :method
@@ -38,9 +37,8 @@
    is known as the Erlang distribution.  The variates are computed using
    the algorithms from Knuth (vol 2).")
 
-(export 'gamma-mt)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gamma-mt)) &key a b)
+    ((generator random-number-generator) (type (eql :gamma-mt)) &key a b)
   "gsl_ran_gamma_mt"
   (((mpointer generator) :pointer) (a :double) (b :double))
   :definition :method
@@ -54,7 +52,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a gamma distribution with parameters a and b, using the
-   formula given in #'gamma.")
+   formula given in #'sample :gamma.")
 
 (defmfun gamma-P (x a b)
   "gsl_cdf_gamma_P" ((x :double) (a :double) (b :double))
@@ -89,11 +87,11 @@
  (let ((rng (make-random-number-generator +mt19937+ 0)))
    (loop for i from 0 to 10
 	 collect
-	 (sample rng 'gamma :a 1.0d0 :b 2.0d0)))
+	 (sample rng :gamma :a 1.0d0 :b 2.0d0)))
  (let ((rng (make-random-number-generator +mt19937+ 0)))
    (loop for i from 0 to 10
 	 collect
-	 (sample rng 'gamma-mt :a 1.0d0 :b 2.0d0)))
+	 (sample rng :gamma-mt :a 1.0d0 :b 2.0d0)))
  (gamma-pdf 0.1d0 1.0d0 2.0d0)
  (gamma-P 0.1d0 1.0d0 2.0d0)
  (gamma-Q 0.1d0 1.0d0 2.0d0)
diff --git a/random/gaussian-bivariate.lisp b/random/gaussian-bivariate.lisp
index 2c72ecd7..50b8e816 100644
--- a/random/gaussian-bivariate.lisp
+++ b/random/gaussian-bivariate.lisp
@@ -1,6 +1,6 @@
 ;; Gaussian bivariate distribution
 ;; Liam Healy, Sat Sep  2 2006 - 16:32
-;; Time-stamp: <2009-12-27 10:00:00EST gaussian-bivariate.lisp>
+;; Time-stamp: <2010-01-17 10:15:54EST gaussian-bivariate.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'gaussian-bivariate)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gaussian-bivariate))
+    ((generator random-number-generator) (type (eql :bivariate-gaussian))
      &key sigma-x sigma-y rho)
   "gsl_ran_bivariate_gaussian"
   (((mpointer generator) :pointer) (sigma-x :double) (sigma-y :double) (rho :double)
@@ -52,7 +51,7 @@
   "The probability density p(x,y) at
    (x,y) for a bivariate Gaussian distribution with standard
    deviations sigma_x, sigma_y and correlation coefficient
-   rho, using the formula given for bivariate-gaussian.")
+   rho, using the formula given for #'sample :bivariate-gaussian.")
 
 ;;; Examples and unit test
 (save-test gaussian-bivariate
@@ -60,7 +59,7 @@
       (loop for i from 0 to 10
 	    collect
 	    (sample
-	     rng 'gaussian-bivariate
+	     rng :bivariate-gaussian
 	     :sigma-x 1.0d0 :sigma-y 0.75d0 :rho 0.25d0)))
   (bivariate-gaussian-pdf 0.25d0 0.5d0 0.25d0
 			   0.4d0 0.2d0))
diff --git a/random/gaussian-tail.lisp b/random/gaussian-tail.lisp
index f2b0817b..0681bc59 100644
--- a/random/gaussian-tail.lisp
+++ b/random/gaussian-tail.lisp
@@ -1,6 +1,6 @@
 ;; Gaussian tail distribution
 ;; Liam Healy, Mon Aug 21 2006 - 21:52
-;; Time-stamp: <2009-12-27 10:01:43EST gaussian-tail.lisp>
+;; Time-stamp: <2010-01-17 10:17:01EST gaussian-tail.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'gaussian-tail)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gaussian-tail))
+    ((generator random-number-generator) (type (eql :gaussian-tail))
      &key a sigma)
   "gsl_ran_gaussian_tail"
   (((mpointer generator) :pointer) (a :double) (sigma :double))
@@ -51,9 +50,8 @@
   for a Gaussian tail distribution with standard deviation sigma and
   lower limit a, using the formula given for gaussian-tail.")
 
-(export 'ugaussian-tail)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'ugaussian-tail))
+    ((generator random-number-generator) (type (eql :ugaussian-tail))
      &key a)
   "gsl_ran_ugaussian_tail"
   (((mpointer generator) :pointer) (a :double))
@@ -74,10 +72,10 @@
  (let ((rng (make-random-number-generator +mt19937+ 0)))
    (loop for i from 0 to 10
 	 collect
-	 (sample rng 'gaussian-tail :a 50.0d0 :sigma 10.0d0)))
+	 (sample rng :gaussian-tail :a 50.0d0 :sigma 10.0d0)))
  (gaussian-tail-pdf 52.0d0 50.0d0 10.0d0)
  (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'ugaussian-tail :a 5.0d0)))
+	   (sample rng :ugaussian-tail :a 5.0d0)))
  (ugaussian-tail-pdf 5.2d0 5.0d0))
diff --git a/random/gaussian.lisp b/random/gaussian.lisp
index d714a3d2..cf2f9d4b 100644
--- a/random/gaussian.lisp
+++ b/random/gaussian.lisp
@@ -1,6 +1,6 @@
 ;; Gaussian distribution
 ;; Liam Healy, Sun Jul 16 2006 - 22:09
-;; Time-stamp: <2009-12-27 10:00:00EST gaussian.lisp>
+;; Time-stamp: <2010-01-17 10:19:46EST gaussian.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'gaussian)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gaussian))
+    ((generator random-number-generator) (type (eql :gaussian))
      &key sigma)
   "gsl_ran_gaussian"
   (((mpointer generator) :pointer) (sigma :double))
@@ -38,7 +37,7 @@
   p(x) dx = {1 \over \sqrt{2 \pi \sigma^2}} \exp (-x^2 / 2\sigma^2) dx
   for x in the range -\infty to +\infty.  Use the
   transformation z = \mu + x on the numbers returned by
-  #'gaussian to obtain a Gaussian distribution with mean
+  this function to obtain a Gaussian distribution with mean
   mu.  This function uses the Box-Mueller algorithm which requires two
   calls to the random number generator r.")
 
@@ -49,9 +48,8 @@
   "Compute the probability density p(x) at x
    for a Gaussian distribution with standard deviation sigma.")
 
-(export 'gaussian-ziggurat)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gaussian-ziggurat))
+    ((generator random-number-generator) (type (eql :gaussian-ziggurat))
      &key sigma)
   "gsl_ran_gaussian_ziggurat"
   (((mpointer generator) :pointer) (sigma :double))
@@ -62,9 +60,8 @@
    Marsaglia-Tsang ziggurat method. The Ziggurat algorithm
    is the fastest available algorithm in most cases.")
 
-(export 'gaussian-ratio-method)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gaussian-ratio-method))
+    ((generator random-number-generator) (type (eql :gaussian-ratio-method))
      &key sigma)
   "gsl_ran_gaussian_ratio_method"
   (((mpointer generator) :pointer) (sigma :double))
@@ -74,16 +71,15 @@
   "Compute a Gaussian random variate using the Kinderman-Monahan-Leva
    ratio method.")
 
-(export 'ugaussian)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'ugaussian)) &key)
+    ((generator random-number-generator) (type (eql :ugaussian)) &key)
   "gsl_ran_ugaussian" (((mpointer generator) :pointer))
   :definition :method
   :c-return :double
   :documentation			; FDL
   "Compute results for the unit Gaussian distribution,
-   equivalent to the #'gaussian with a standard deviation of one,
-   sigma = 1.")
+   equivalent to the #'sample :gaussian with a standard deviation of
+   one, sigma = 1.")
 
 (defmfun ugaussian-pdf (x)
   "gsl_ran_ugaussian_pdf" ((x :double))
@@ -93,9 +89,8 @@
    equivalent to the #'gaussian-pdf with a standard deviation of one,
    sigma = 1.")
 
-(export 'ugaussian-ratio-method)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'ugaussian-ratio-method))
+    ((generator random-number-generator) (type (eql :ugaussian-ratio-method))
      &key)
   "gsl_ran_ugaussian_ratio_method"
   (((mpointer generator) :pointer))
@@ -103,8 +98,8 @@
   :c-return :double
   :documentation			; FDL
   "Compute results for the unit Gaussian distribution,
-   equivalent to the #'gaussian-ration-method with a
-   standard deviation of one, sigma = 1.")
+   equivalent to the #'sample :gaussian-ration-method with a standard
+   deviation of one, sigma = 1.")
 
 (defmfun gaussian-P (x sigma)
   "gsl_cdf_gaussian_P" ((x :double) (sigma :double))
@@ -168,12 +163,12 @@
  (let ((rng (make-random-number-generator +mt19937+ 0)))
    (loop for i from 0 to 10
 	 collect
-	 (sample rng 'gaussian :sigma 10.0d0)))
+	 (sample rng :gaussian :sigma 10.0d0)))
  (gaussian-pdf 0.0d0 10.0d0)
  (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'gaussian-ziggurat :sigma 10.0d0)))
+	   (sample rng :gaussian-ziggurat :sigma 10.0d0)))
  ;; Given in examples in GSL documentation
  (ugaussian-p 2.0d0)
  (ugaussian-q 2.0d0)
diff --git a/random/generators.lisp b/random/generators.lisp
index 5e2f9683..1038e80a 100644
--- a/random/generators.lisp
+++ b/random/generators.lisp
@@ -1,6 +1,6 @@
 ;; Generators of random numbers.
 ;; Liam Healy, Sat Jul 15 2006 - 14:43
-;; Time-stamp: <2009-12-27 10:01:42EST generators.lisp>
+;; Time-stamp: <2010-01-17 10:21:31EST generators.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -77,8 +77,7 @@
   (:documentation
    "Sample from the probability distribution."))
 
-(export 'uniform)
-(defmfun sample ((source random-number-generator) (type (eql 'uniform)) &key)
+(defmfun sample ((source random-number-generator) (type (eql :uniform)) &key)
   "gsl_rng_uniform" (((mpointer source) :pointer))
   :definition :method
   :c-return :double
@@ -92,8 +91,7 @@
    (the maximum number of bits that can be portably represented in a single
    :ulong.")
 
-(export 'uniform>0)
-(defmfun sample ((source random-number-generator) (type (eql 'uniform>0)) &key)
+(defmfun sample ((source random-number-generator) (type (eql :uniform>0)) &key)
   "gsl_rng_uniform_pos" (((mpointer source) :pointer))
   :definition :method
   :c-return :double
@@ -104,9 +102,8 @@
    type 'uniform until a non-zero value is obtained.  You can use this
    function if you need to avoid a singularity at 0.0.")
 
-(export 'uniform-fixnum)
 (defmfun sample
-    ((source random-number-generator) (type (eql 'uniform-fixnum))
+    ((source random-number-generator) (type (eql :uniform-fixnum))
      &key upperbound)
   "gsl_rng_uniform_int"
   (((mpointer source) :pointer) (upperbound :ulong))
@@ -205,6 +202,6 @@
  (let ((rng (make-random-number-generator +mt19937+ 0)))
    (loop for i from 0 to 10
 	 collect
-	 (sample rng 'uniform-fixnum :upperbound 1000)))
+	 (sample rng :uniform-fixnum :upperbound 1000)))
  (let ((rng (make-random-number-generator *cmrg* 0)))
    (loop for i from 0 to 10 collect (sample rng 'uniform))))
diff --git a/random/geometric.lisp b/random/geometric.lisp
index e38106bd..ee146242 100644
--- a/random/geometric.lisp
+++ b/random/geometric.lisp
@@ -1,6 +1,6 @@
 ;; Geometric distribution
 ;; Liam Healy, Sat Nov 25 2006 - 16:00
-;; Time-stamp: <2009-12-27 10:01:43EST geometric.lisp>
+;; Time-stamp: <2010-01-17 10:22:14EST geometric.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'geometric)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'geometric))
+    ((generator random-number-generator) (type (eql :geometric))
      &key probability)
   "gsl_ran_geometric"
   (((mpointer generator) :pointer) (probability :double))
@@ -45,7 +44,7 @@
   :documentation			; FDL
   "The probability p(k) of obtaining k
    from a geometric distribution with probability parameter p, using
-   the formula given in #'geometric.")
+   the formula given in #'sample :geometric.")
 
 (defmfun geometric-P (k p)
   "gsl_cdf_geometric_P" ((k :uint) (p :double))
@@ -66,7 +65,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'geometric :probability 0.4d0)))
+	   (sample rng :geometric :probability 0.4d0)))
   (geometric-pdf 2 0.4d0)
   (geometric-P 2 0.4d0)
   (geometric-Q 2 0.4d0))
diff --git a/random/gumbel1.lisp b/random/gumbel1.lisp
index fe33b907..793d8fe2 100644
--- a/random/gumbel1.lisp
+++ b/random/gumbel1.lisp
@@ -1,6 +1,6 @@
 ;; The Gumbel type 1 random number distribution
 ;; Liam Healy, Sun Oct 29 2006
-;; Time-stamp: <2009-12-27 10:01:41EST gumbel1.lisp>
+;; Time-stamp: <2010-01-17 10:22:56EST gumbel1.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'geometric)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gumbel1)) &key a b)
+    ((generator random-number-generator) (type (eql :gumbel1)) &key a b)
   "gsl_ran_gumbel1"
   (((mpointer generator) :pointer) (a :double) (b :double))
   :definition :method
@@ -42,7 +41,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
   for a Type-1 Gumbel distribution with parameters a and b,
-  using the formula given for #'gumbel1.")
+  using the formula given for #'sample :gumbel1.")
 
 (defmfun gumbel1-P (x a b)
   "gsl_cdf_gumbel1_P" ((x :double) (a :double) (b :double))
@@ -80,7 +79,7 @@
 (save-test gumbel1
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
-	    collect (sample rng 'gumbel1 :a 1.0d0 :b 2.0d0)))
+	    collect (sample rng :gumbel1 :a 1.0d0 :b 2.0d0)))
   (gumbel1-pdf 0.1d0 1.0d0 2.0d0)
   (gumbel1-P 0.1d0 1.0d0 2.0d0)
   (gumbel1-Q 0.1d0 1.0d0 2.0d0)
diff --git a/random/gumbel2.lisp b/random/gumbel2.lisp
index ea692184..87ed3217 100644
--- a/random/gumbel2.lisp
+++ b/random/gumbel2.lisp
@@ -1,6 +1,6 @@
 ;; The Gumbel type 2 random number distribution
 ;; Liam Healy, Sun Oct 29 2006
-;; Time-stamp: <2009-12-27 10:01:40EST gumbel2.lisp>
+;; Time-stamp: <2010-01-17 10:23:29EST gumbel2.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'gumbel2)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'gumbel2)) &key a b)
+    ((generator random-number-generator) (type (eql :gumbel2)) &key a b)
   "gsl_ran_gumbel2"
   (((mpointer generator) :pointer) (a :double) (b :double))
   :definition :method
@@ -41,7 +40,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a Type-2 Gumbel distribution with parameters a and b,
-   using the formula given in #'gumbel2.")
+   using the formula given in #'sample :gumbel2.")
 
 (defmfun gumbel2-P (x a b)
   "gsl_cdf_gumbel2_P" ((x :double) (a :double) (b :double))
@@ -79,7 +78,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'gumbel2 :a 1.0d0 :b 2.0d0)))
+	    (sample rng :gumbel2 :a 1.0d0 :b 2.0d0)))
   (gumbel2-pdf 5.0d0 1.0d0 2.0d0)
   (gumbel2-P 10.0d0 1.0d0 2.0d0)
   (gumbel2-Q 10.0d0 1.0d0 2.0d0)
diff --git a/random/hypergeometric.lisp b/random/hypergeometric.lisp
index a307cea4..a00c991e 100644
--- a/random/hypergeometric.lisp
+++ b/random/hypergeometric.lisp
@@ -1,6 +1,6 @@
 ;; Hypergeometric distribution
 ;; Liam Healy, Sat Nov 25 2006 - 16:00
-;; Time-stamp: <2009-12-27 10:03:54EST hypergeometric.lisp>
+;; Time-stamp: <2010-01-17 10:24:31EST hypergeometric.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'hypergeometric)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'hypergeometric))
+    ((generator random-number-generator) (type (eql :hypergeometric))
      &key n1 n2 tt)
   "gsl_ran_hypergeometric"
   (((mpointer generator) :pointer) (n1 :uint) (n2 :uint)(tt :uint))
@@ -51,7 +50,7 @@
   :documentation			; FDL
   "The probability p(k) of obtaining k
    from a hypergeometric distribution with parameters n1, n2,
-   tt, using the formula given in #'hypergeometric.")
+   tt, using the formula given in #'sample :hypergeometric.")
 
 (defmfun hypergeometric-P (k n1 n2 tt)
   "gsl_cdf_hypergeometric_P" ((k :uint) (n1 :uint) (n2 :uint)(tt :uint))
@@ -72,7 +71,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'hypergeometric :n1 3 :n2 6 :tt 3)))
+	   (sample rng :hypergeometric :n1 3 :n2 6 :tt 3)))
   (hypergeometric-pdf 0 2 6 3)
   (hypergeometric-P 1 2 6 3)
   (hypergeometric-Q 1 2 6 3))
diff --git a/random/landau.lisp b/random/landau.lisp
index 087775a7..409f65b7 100644
--- a/random/landau.lisp
+++ b/random/landau.lisp
@@ -1,6 +1,6 @@
 ;; Landau distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:03:54EST landau.lisp>
+;; Time-stamp: <2010-01-17 10:24:59EST landau.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'landau)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'landau)) &key)
+    ((generator random-number-generator) (type (eql :landau)) &key)
   "gsl_ran_landau"
   (((mpointer generator) :pointer))
   :definition :method
@@ -44,11 +43,11 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for the Landau distribution using an approximation to the formula given
-   in #'landau.")
+   in #'sample :landau.")
 
 ;;; Examples and unit test
 (save-test landau
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
-	    collect (sample rng 'landau)))
+	    collect (sample rng :landau)))
   (landau-pdf 0.25d0))
diff --git a/random/laplace.lisp b/random/laplace.lisp
index a8d7d376..b44f03d5 100644
--- a/random/laplace.lisp
+++ b/random/laplace.lisp
@@ -1,6 +1,6 @@
 ;; Exponential distribution
 ;; Liam Healy, Sun Sep 17 2006
-;; Time-stamp: <2009-12-27 10:03:53EST laplace.lisp>
+;; Time-stamp: <2010-01-17 10:25:36EST laplace.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'laplace)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'laplace)) &key a)
+    ((generator random-number-generator) (type (eql :laplace)) &key a)
   "gsl_ran_laplace"
   (((mpointer generator) :pointer) (a :double))
   :definition :method
@@ -42,7 +41,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a Laplace distribution with width a, using the formula
-   given for #'laplace.")
+   given for #'sample :laplace.")
 
 (defmfun laplace-P (x a)
   "gsl_cdf_laplace_P" ((x :double) (a :double))
@@ -77,7 +76,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'laplace :a 10.0d0)))
+	    (sample rng :laplace :a 10.0d0)))
   (laplace-pdf 0.0d0 10.0d0)
   (laplace-p 1.0d0 2.0d0)
   (laplace-q 1.0d0 2.0d0)
diff --git a/random/levy.lisp b/random/levy.lisp
index 9a9589b8..8bf0f646 100644
--- a/random/levy.lisp
+++ b/random/levy.lisp
@@ -1,6 +1,6 @@
 ;; Levy distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:03:53EST levy.lisp>
+;; Time-stamp: <2010-01-17 10:26:16EST levy.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'levy)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'levy)) &key c alpha)
+    ((generator random-number-generator) (type (eql :levy)) &key c alpha)
   "gsl_ran_levy"
   (((mpointer generator) :pointer) (c :double) (alpha :double))
   :definition :method
@@ -41,9 +40,8 @@
    For \alpha < 1 the tails of the distribution become extremely wide.
    The algorithm only works for 0 < alpha <= 2.")
 
-(export 'levy-skew)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'levy-skew))
+    ((generator random-number-generator) (type (eql :levy-skew))
      &key c alpha beta)
   "gsl_ran_levy_skew"
   (((mpointer generator) :pointer) (c :double) (alpha :double) (beta :double))
@@ -71,8 +69,8 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'levy :c 1.0d0 :alpha 2.0d0)))
+	    (sample rng :levy :c 1.0d0 :alpha 2.0d0)))
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'levy-skew :c 1.0d0 :alpha 2.0d0 :beta 1.0d0))))
+	    (sample rng :levy-skew :c 1.0d0 :alpha 2.0d0 :beta 1.0d0))))
diff --git a/random/logarithmic.lisp b/random/logarithmic.lisp
index d8999ef6..0df7a8d0 100644
--- a/random/logarithmic.lisp
+++ b/random/logarithmic.lisp
@@ -1,6 +1,6 @@
 ;; Logarithmic distribution
 ;; Liam Healy, Sat Nov 25 2006 - 16:00
-;; Time-stamp: <2009-12-27 10:03:53EST logarithmic.lisp>
+;; Time-stamp: <2010-01-17 10:26:45EST logarithmic.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'logarithmic)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'logarithmic))
+    ((generator random-number-generator) (type (eql :logarithmic))
      &key probability)
   "gsl_ran_logarithmic"
   (((mpointer generator) :pointer) (probability :double))
@@ -42,12 +41,12 @@
   :documentation
   "The probability p(k) of obtaining k
    from a logarithmic distribution with probability parameter p,
-   using the formula given in #'logarithmic.")
+   using the formula given in #'sample :logarithmic.")
 
 ;;; Examples and unit test
 (save-test logarithmic
   (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'logarithmic :probability 0.9d0)))
+	   (sample rng :logarithmic :probability 0.9d0)))
   (logarithmic-pdf 2 0.4d0))
diff --git a/random/logistic.lisp b/random/logistic.lisp
index b2ec5b52..2a1b1212 100644
--- a/random/logistic.lisp
+++ b/random/logistic.lisp
@@ -1,6 +1,6 @@
 ;; Logistic distribution
 ;; Liam Healy, Sat Oct  7 2006 - 16:13
-;; Time-stamp: <2009-12-27 10:03:53EST logistic.lisp>
+;; Time-stamp: <2010-01-17 10:27:24EST logistic.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'logistic)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'logistic)) &key a)
+    ((generator random-number-generator) (type (eql :logistic)) &key a)
   "gsl_ran_logistic"
   (((mpointer generator) :pointer) (a :double))
   :definition :method
@@ -41,7 +40,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a logistic distribution with scale parameter a, using the
-   formula given in #'logistic.")
+   formula given in #'sample :logistic.")
 
 (defmfun logistic-P (x a)
   "gsl_cdf_logistic_P" ((x :double) (a :double))
@@ -76,7 +75,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'logistic :a 10.0d0)))
+	    (sample rng :logistic :a 10.0d0)))
   (logistic-pdf 0.5d0 1.0d0)
   (logistic-P 0.5d0 1.0d0)
   (logistic-Q 0.5d0 1.0d0)
diff --git a/random/lognormal.lisp b/random/lognormal.lisp
index 65945320..933309c2 100644
--- a/random/lognormal.lisp
+++ b/random/lognormal.lisp
@@ -1,6 +1,6 @@
 ;; Lognormal distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:03:52EST lognormal.lisp>
+;; Time-stamp: <2010-01-17 10:27:47EST lognormal.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -20,9 +20,8 @@
 
 (in-package :gsl)
 
-(export 'lognormal)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'lognormal))
+    ((generator random-number-generator) (type (eql :lognormal))
      &key zeta sigma)
   "gsl_ran_lognormal"
   (((mpointer generator) :pointer) (zeta :double) (sigma :double))
@@ -40,7 +39,7 @@
   :documentation			; FDL
   "The probability density p(x) at X
    for a lognormal distribution with parameters zeta and sigma,
-   using the formula given in #'lognormal.")
+   using the formula given in #'sample :lognormal.")
 
 (defmfun lognormal-P (x zeta sigma)
   "gsl_cdf_lognormal_P" ((x :double) (zeta :double) (sigma :double))
@@ -78,7 +77,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'lognormal :zeta 1.0d0 :sigma 2.0d0)))
+	    (sample rng :lognormal :zeta 1.0d0 :sigma 2.0d0)))
   (lognormal-pdf 1.2d0 1.0d0 2.0d0)
   (lognormal-P 1.2d0 1.0d0 2.0d0)
   (lognormal-Q 1.2d0 1.0d0 2.0d0)
diff --git a/random/multinomial.lisp b/random/multinomial.lisp
index 24336b8c..6af8b3a2 100644
--- a/random/multinomial.lisp
+++ b/random/multinomial.lisp
@@ -1,6 +1,6 @@
 ;; Multinomial distribution
 ;; Liam Healy, Sat Nov 25 2006 - 16:00
-;; Time-stamp: <2009-12-27 10:03:52EST multinomial.lisp>
+;; Time-stamp: <2010-01-17 10:28:22EST multinomial.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'multinomial)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'multinomial))
+    ((generator random-number-generator) (type (eql :multinomial))
      &key sum probabilities
      (n (make-marray
 	 '(signed-byte 32) :dimensions (dim0 probabilities))))
@@ -63,7 +62,7 @@
   :documentation			; FDL
   "Compute the probability P(n_1, n_2, ..., n_K)
    of sampling n[K] from a multinomial distribution 
-   with parameters p[K], using the formula given for #'multinomial.")
+   with parameters p[K], using the formula given for #'sample :multinomial.")
 
 (defmfun multinomial-log-pdf (p n)
   "gsl_ran_multinomial_lnpdf"
@@ -73,13 +72,13 @@
   :documentation			; FDL
   "Compute the natural logarithm of the probability P(n_1, n_2, ..., n_K)
    of sampling n[K] from a multinomial distribution 
-   with parameters p[K], using the formula given for #'multinomial.")
+   with parameters p[K], using the formula given for #'sample :multinomial.")
 
 ;;; Examples and unit test
 (save-test multinomial
  (let ((rng (make-random-number-generator +mt19937+ 0))
        (p #m(0.1d0 0.2d0 0.3d0 0.4d0)))
-   (cl-array (sample rng 'multinomial :sum 8 :probabilities p)))
+   (cl-array (sample rng :multinomial :sum 8 :probabilities p)))
  (let ((p #m(0.1d0 0.2d0 0.3d0 0.4d0))
        (n #31m(5 0 1 2)))
    (multinomial-pdf p N))
diff --git a/random/negative-binomial.lisp b/random/negative-binomial.lisp
index bddcb66f..397ed560 100644
--- a/random/negative-binomial.lisp
+++ b/random/negative-binomial.lisp
@@ -1,6 +1,6 @@
 ;; Negative binomial and Pascal distributions
 ;; Liam Healy, Sat Nov 25 2006 - 16:00
-;; Time-stamp: <2009-12-27 10:03:52EST negative-binomial.lisp>
+;; Time-stamp: <2010-01-17 10:29:42EST negative-binomial.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -26,9 +26,8 @@
 ;;;; Negative binomial
 ;;;;****************************************************************************
 
-(export 'negative-binomial)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'negative-binomial))
+    ((generator random-number-generator) (type (eql :negative-binomial))
      &key probability n)
   "gsl_ran_negative_binomial"
   (((mpointer generator) :pointer) (probability :double) (n :double))
@@ -49,7 +48,7 @@
   :documentation			; FDL
   "The probability p(k) of obtaining k
    from a negative binomial distribution with parameters p and
-   n, using the formula given in #'negative-binomial.")
+   n, using the formula given in #'sample :negative-binomial.")
 
 (defmfun negative-binomial-P (k p n)
   "gsl_cdf_negative_binomial_P" ((k :uint) (p :double) (n :double))
@@ -71,9 +70,8 @@
 ;;;; Pascal
 ;;;;****************************************************************************
 
-(export 'pascal)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'pascal))
+    ((generator random-number-generator) (type (eql :pascal))
      &key probability n)
   "gsl_ran_pascal"
   (((mpointer generator) :pointer) (probability :double) (n :uint))
@@ -92,7 +90,7 @@
   :documentation			; FDL
   "The probability p(k) of obtaining k
    from a Pascal distribution with parameters p and
-   n, using the formula given in #'pascal.")
+   n, using the formula given in #'sample :pascal.")
 
 (defmfun pascal-P (k p n)
   "gsl_cdf_pascal_P" ((k :uint) (p :double) (n :uint))
@@ -118,14 +116,14 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'negative-binomial :probability 0.4d0 :n 12.0d0)))
+	   (sample rng :negative-binomial :probability 0.4d0 :n 12.0d0)))
   (negative-binomial-pdf 5 0.4d0 12.0d0)
   (negative-binomial-P 5 0.4d0 12.0d0)
   (negative-binomial-Q 5 0.4d0 12.0d0)
   (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'pascal :probability 0.4d0 :n 12)))
+	   (sample rng :pascal :probability 0.4d0 :n 12)))
   (pascal-pdf 5 0.4d0 12)
   (pascal-P 5 0.4d0 12)
   (pascal-Q 5 0.4d0 12))
diff --git a/random/pareto.lisp b/random/pareto.lisp
index d5dea2be..bc764144 100644
--- a/random/pareto.lisp
+++ b/random/pareto.lisp
@@ -1,6 +1,6 @@
 ;; Pareto distribution
 ;; Liam Healy, Sat Oct  8 2006 - 21:23
-;; Time-stamp: <2009-12-27 10:03:51EST pareto.lisp>
+;; Time-stamp: <2010-01-17 10:30:11EST pareto.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'pareto)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'pareto)) &key a b)
+    ((generator random-number-generator) (type (eql :pareto)) &key a b)
   "gsl_ran_pareto"
   (((mpointer generator) :pointer) (a :double) (b :double))
   :definition :method
@@ -42,7 +41,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a Pareto distribution with exponent a and scale b, using
-   the formula given in #'pareto.")
+   the formula given in #'sample :pareto.")
 
 (defmfun pareto-P (x a b)
   "gsl_cdf_pareto_P" ((x :double) (a :double) (b :double))
@@ -77,7 +76,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'pareto :a 1.0d0 :b 2.0d0)))
+	    (sample rng :pareto :a 1.0d0 :b 2.0d0)))
   (pareto-pdf 1.5d0 1.3d0 1.0d0)
   (pareto-P 3.5d0 1.3d0 2.0d0)
   (pareto-Q 3.5d0 1.3d0 2.0d0)
diff --git a/random/poisson.lisp b/random/poisson.lisp
index 36c512d2..80012e03 100644
--- a/random/poisson.lisp
+++ b/random/poisson.lisp
@@ -1,6 +1,6 @@
 ;; Poisson distribution
 ;; Liam Healy, Sat Nov 25 2006 - 16:00
-;; Time-stamp: <2009-12-27 10:03:51EST poisson.lisp>
+;; Time-stamp: <2010-01-17 10:30:48EST poisson.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'poisson)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'poisson)) &key mu)
+    ((generator random-number-generator) (type (eql :poisson)) &key mu)
   "gsl_ran_poisson"
   (((mpointer generator) :pointer) (mu :double))
   :definition :method
@@ -42,7 +41,7 @@
   :documentation			; FDL
   "The probability p(k) of obtaining k
    from a Poisson distribution with mean mu using the formula
-   given in #'poisson.")
+   given in #'sample :poisson.")
 
 (defmfun poisson-P (k mu)
   "gsl_cdf_poisson_P" ((k :uint) (mu :double))
@@ -63,7 +62,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
      (loop for i from 0 to 10
 	   collect
-	   (sample rng 'poisson :mu 10.0d0)))
+	   (sample rng :poisson :mu 10.0d0)))
   (poisson-pdf 8 10.0d0)
   (poisson-P 8 10.0d0)
   (poisson-Q 8 10.0d0))
diff --git a/random/rayleigh-tail.lisp b/random/rayleigh-tail.lisp
index 34166069..3de5d425 100644
--- a/random/rayleigh-tail.lisp
+++ b/random/rayleigh-tail.lisp
@@ -1,6 +1,6 @@
 ;; Rayleigh tail distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:03:50EST rayleigh-tail.lisp>
+;; Time-stamp: <2010-01-17 10:31:22EST rayleigh-tail.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'rayleigh-tail)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'rayleigh-tail))
+    ((generator random-number-generator) (type (eql :rayleigh-tail))
      &key a sigma)
   "gsl_ran_rayleigh_tail"
   (((mpointer generator) :pointer) (a :double) (sigma :double))
@@ -43,11 +42,11 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a Rayleigh tail distribution with scale parameter sigma and
-   lower limit a, using the formula given in #'rayleigh-tail.")
+   lower limit a, using the formula given in #'sample :rayleigh-tail.")
 
 ;;; Examples and unit test
 (save-test rayleigh-tail
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
-	    collect (sample rng 'rayleigh-tail :a 1.0d0 :sigma 10.0d0)))
+	    collect (sample rng :rayleigh-tail :a 1.0d0 :sigma 10.0d0)))
   (rayleigh-tail-pdf 0.25d0 -2.0d0 2.0d0))
diff --git a/random/rayleigh.lisp b/random/rayleigh.lisp
index e68fefa8..9cb900bd 100644
--- a/random/rayleigh.lisp
+++ b/random/rayleigh.lisp
@@ -1,6 +1,6 @@
 ;; Rayleigh distribution
 ;; Liam Healy, Sat Sep 30 2006
-;; Time-stamp: <2009-12-27 10:03:51EST rayleigh.lisp>
+;; Time-stamp: <2010-01-17 10:31:48EST rayleigh.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'rayleigh)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'rayleigh))
+    ((generator random-number-generator) (type (eql :rayleigh))
      &key sigma)
   "gsl_ran_rayleigh"
   (((mpointer generator) :pointer) (sigma :double))
@@ -42,7 +41,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a Rayleigh distribution with scale parameter sigma, using the
-   formula given for #'rayleigh.")
+   formula given for #'sample :rayleigh.")
 
 (defmfun rayleigh-P (x sigma)
   "gsl_cdf_rayleigh_P" ((x :double) (sigma :double))
@@ -81,7 +80,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'rayleigh :sigma 10.0d0)))
+	    (sample rng :rayleigh :sigma 10.0d0)))
   (rayleigh-pdf 0.5d0 1.0d0)
   (rayleigh-P 1.0d0 2.0d0)
   (rayleigh-Q 1.0d0 2.0d0)
diff --git a/random/shuffling-sampling.lisp b/random/shuffling-sampling.lisp
index fc26b09d..83a248ce 100644
--- a/random/shuffling-sampling.lisp
+++ b/random/shuffling-sampling.lisp
@@ -1,6 +1,6 @@
 ;; Shuffling and sampling
 ;; Liam Healy, Sat Dec  2 2006 - 18:40
-;; Time-stamp: <2009-12-27 10:03:50EST shuffling-sampling.lisp>
+;; Time-stamp: <2010-01-17 10:33:13EST shuffling-sampling.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; These are currently defined only for vectors.
 
-(export 'shuffle)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'shuffle))
+    ((generator random-number-generator) (type (eql :shuffle))
      &key base)
   "gsl_ran_shuffle"
   (((mpointer generator) :pointer)
@@ -41,9 +40,8 @@
    permutations with equal probability, assuming a perfect source of random
    numbers.")
 
-(export 'choose-random)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'choose-random))
+    ((generator random-number-generator) (type (eql :choose-random))
      &key src (dest (dim0 src))
      &aux
      (destarr
@@ -68,11 +66,10 @@
    only appear once in destarr[k].  It is required that k be less
    than or equal to n.  The objects in destarr will be in the
    same relative order as those in src.  You will need to call
-   with 'shuffle if you want to randomize the order.")
+   with :shuffle if you want to randomize the order.")
 
-(export 'random-sample)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'random-sample))
+    ((generator random-number-generator) (type (eql :random-sample))
      &key src (dest (dim0 src))
      &aux
      (destarr
@@ -88,20 +85,19 @@
   :outputs (destarr)
   :c-return :void
   :documentation
-  "Like #'choose-random, but samples k items
-   from the original array of n items src with replacement, so
-   the same object can appear more than once in the output sequence
-   dest.  There is no requirement that k be less than n
-   in this case.")
+  "Like :choose-random, but samples k items from the original array of
+   n items src with replacement, so the same object can appear more
+   than once in the output sequence dest.  There is no requirement
+   that k be less than n in this case.")
 
 ;;; Examples and unit test
 (save-test shuffling-sampling
  (let ((rng (make-random-number-generator +mt19937+ 0))
        (v1 #31m(1 2 3 4 5 6 7 8)))
-   (cl-array (sample rng 'shuffle :base v1)))
+   (cl-array (sample rng :shuffle :base v1)))
  (let ((rng (make-random-number-generator +mt19937+ 0))
        (v1 #31m(1 2 3 4 5 6 7 8)))
-   (cl-array (sample rng 'choose-random :src v1 :dest 4)))
+   (cl-array (sample rng :choose-random :src v1 :dest 4)))
  (let ((rng (make-random-number-generator +mt19937+ 0))
        (v1 #31m(1 2 3 4 5 6 7 8)))
-   (cl-array (sample rng 'random-sample :src v1 :dest 10))))
+   (cl-array (sample rng :random-sample :src v1 :dest 10))))
diff --git a/random/spherical-vector.lisp b/random/spherical-vector.lisp
index 0fa5533a..249844ad 100644
--- a/random/spherical-vector.lisp
+++ b/random/spherical-vector.lisp
@@ -1,6 +1,6 @@
 ;; Spherical Vector distribution
 ;; Liam Healy, Sun Oct  22 2006
-;; Time-stamp: <2009-12-27 10:03:49EST spherical-vector.lisp>
+;; Time-stamp: <2010-01-17 10:35:25EST spherical-vector.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -24,9 +24,8 @@
 
 ;;; No test for #'direction-Nd yet.
 
-(export 'direction-2d)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'direction-2d)) &key)
+    ((generator random-number-generator) (type (eql :direction-2d)) &key)
   "gsl_ran_dir_2d"
   (((mpointer generator) :pointer)
    (x (:pointer :double)) (y (:pointer :double)))
@@ -37,9 +36,8 @@
    two dimensions.  The vector is normalized such that
    |v|^2 = x^2 + y^2 = 1.")
 
-(export 'direction-2d-trig-method)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'direction-2d-trig-method)) &key)
+    ((generator random-number-generator) (type (eql :direction-2d-trig-method)) &key)
   "gsl_ran_dir_2d_trig_method"
   (((mpointer generator) :pointer)
    (x (:pointer :double)) (y (:pointer :double)))
@@ -50,9 +48,8 @@
    two dimensions.  The vector is normalized such that
    |v|^2 = x^2 + y^2 = 1.  Uses trigonometric functions.")
 
-(export 'direction-3d)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'direction-3d)) &key)
+    ((generator random-number-generator) (type (eql :direction-3d)) &key)
   "gsl_ran_dir_3d"
   (((mpointer generator) :pointer)
    (x (:pointer :double)) (y (:pointer :double)) (z (:pointer :double)))
@@ -67,9 +64,8 @@
   projected along any axis is actually uniform (this is only true for 3
   dimensions).")
 
-(export 'direction-Nd)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'direction-Nd)) &key vector)
+    ((generator random-number-generator) (type (eql :direction-Nd)) &key vector)
   "gsl_ran_dir_nd"
   (((mpointer generator) :pointer) ((dim0 vector) sizet)
    ((c-pointer vector) :pointer))
@@ -92,12 +88,12 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 4
 	    append
-	    (multiple-value-list (sample rng 'direction-2d))))
+	    (multiple-value-list (sample rng :direction-2d))))
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 4
 	    append
-	    (multiple-value-list (sample rng 'direction-2d-trig-method))))
+	    (multiple-value-list (sample rng :direction-2d-trig-method))))
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 2
 	    append
-	    (multiple-value-list (sample rng 'direction-3d)))))
+	    (multiple-value-list (sample rng :direction-3d)))))
diff --git a/random/tdist.lisp b/random/tdist.lisp
index 804b7311..735302b0 100644
--- a/random/tdist.lisp
+++ b/random/tdist.lisp
@@ -1,6 +1,6 @@
 ;; Tdist distribution
 ;; Liam Healy, Sat Oct  7 2006 - 16:13
-;; Time-stamp: <2009-12-27 10:03:49EST tdist.lisp>
+;; Time-stamp: <2010-01-17 10:36:02EST tdist.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -22,9 +22,8 @@
 
 ;;; /usr/include/gsl/gsl_randist.h
 
-(export 'tdist)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'tdist)) &key nu)
+    ((generator random-number-generator) (type (eql :tdist)) &key nu)
   "gsl_ran_tdist"
   (((mpointer generator) :pointer) (nu :double))
   :definition :method
@@ -42,7 +41,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a t-distribution with nu degrees of freedom, using the formula
-   given in #'tdist.")
+   given in #'sample :tdist.")
 
 (defmfun tdist-P (x nu)
   "gsl_cdf_tdist_P" ((x :double) (nu :double))
@@ -77,7 +76,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'tdist :nu 10.0d0)))
+	    (sample rng :tdist :nu 10.0d0)))
   (tdist-pdf 0.5d0 1.0d0)
   (tdist-P 0.5d0 1.0d0)
   (tdist-Q 0.5d0 1.0d0)
diff --git a/random/weibull.lisp b/random/weibull.lisp
index 82dce05a..52a51ead 100644
--- a/random/weibull.lisp
+++ b/random/weibull.lisp
@@ -1,6 +1,6 @@
 ;; Weibull distribution
 ;; Liam Healy, Sun Oct 22 2006
-;; Time-stamp: <2009-12-27 10:03:49EST weibull.lisp>
+;; Time-stamp: <2010-01-17 10:36:26EST weibull.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -23,9 +23,8 @@
 ;;; /usr/include/gsl/gsl_randist.h
 ;;; /usr/include/gsl/gsl_cdf.h
 
-(export 'weibull)
 (defmfun sample
-    ((generator random-number-generator) (type (eql 'weibull)) &key a b)
+    ((generator random-number-generator) (type (eql :weibull)) &key a b)
   "gsl_ran_weibull"
   (((mpointer generator) :pointer) (a :double) (b :double))
   :definition :method
@@ -41,7 +40,7 @@
   :documentation			; FDL
   "The probability density p(x) at x
    for a Weibull distribution with scale a and exponent b,
-   using the formula given in #'weibull.")
+   using the formula given in #'sample :weibull.")
 
 (defmfun weibull-P (x a b)
   "gsl_cdf_weibull_P" ((x :double) (a :double) (b :double))
@@ -76,7 +75,7 @@
   (let ((rng (make-random-number-generator +mt19937+ 0)))
       (loop for i from 0 to 10
 	    collect
-	    (sample rng 'weibull :a 1.0d0 :b 2.0d0)))
+	    (sample rng :weibull :a 1.0d0 :b 2.0d0)))
   (weibull-pdf 1.5d0 1.3d0 1.0d0)
   (weibull-P 3.5d0 1.3d0 2.0d0)
   (weibull-Q 3.5d0 1.3d0 2.0d0)
diff --git a/solve-minimize-fit/linear-least-squares.lisp b/solve-minimize-fit/linear-least-squares.lisp
index ea1308cf..8874334d 100644
--- a/solve-minimize-fit/linear-least-squares.lisp
+++ b/solve-minimize-fit/linear-least-squares.lisp
@@ -1,6 +1,6 @@
 ;; Linear least squares, or linear regression
 ;; Liam Healy <2008-01-21 12:41:46EST linear-least-squares.lisp>
-;; Time-stamp: <2009-12-27 10:05:33EST linear-least-squares.lisp>
+;; Time-stamp: <2010-01-17 10:40:22EST linear-least-squares.lisp>
 ;;
 ;; Copyright 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -341,7 +341,7 @@
 	  for y0 = (exp xd)
 	  for sigma = (* 0.1d0 y0)
 	  collect
-	  (list xd (+ y0 (sample rng 'gaussian :sigma sigma)) sigma))))
+	  (list xd (+ y0 (sample rng :gaussian :sigma sigma)) sigma))))
 
 (defun linear-least-squares-multivariate-example (data &optional (print-details t))
   "Second example in Section 36.5 of the GSL manual.  Returns the
diff --git a/solve-minimize-fit/nonlinear-least-squares.lisp b/solve-minimize-fit/nonlinear-least-squares.lisp
index 5ffd0d6f..a7279fb9 100644
--- a/solve-minimize-fit/nonlinear-least-squares.lisp
+++ b/solve-minimize-fit/nonlinear-least-squares.lisp
@@ -1,6 +1,6 @@
 ;; Nonlinear least squares fitting.
 ;; Liam Healy, 2008-02-09 12:59:16EST nonlinear-least-squares.lisp
-;; Time-stamp: <2009-12-27 10:05:32EST nonlinear-least-squares.lisp>
+;; Time-stamp: <2010-01-17 10:41:47EST nonlinear-least-squares.lisp>
 ;;
 ;; Copyright 2008, 2009 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -298,7 +298,7 @@
      (dotimes (i number-of-observations arr)
        (setf (maref arr i)
 	     (+ 1 (* 5 (exp (* -1/10 i)))
-		(sample rng 'gaussian :sigma 0.1d0)))))
+		(sample rng :gaussian :sigma 0.1d0)))))
    :sigma
    (make-marray
     'double-float :dimensions number-of-observations :initial-element 0.1d0)))
diff --git a/tests/bernoulli.lisp b/tests/bernoulli.lisp
index 3eaa7866..753657de 100644
--- a/tests/bernoulli.lisp
+++ b/tests/bernoulli.lisp
@@ -24,7 +24,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'bernoulli :probability 0.5d0)))))
+	   (sample rng :bernoulli :probability 0.5d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.5d0)
    (MULTIPLE-VALUE-LIST (BERNOULLI-PDF 0 0.5d0))))
diff --git a/tests/beta.lisp b/tests/beta.lisp
index 1991c429..1c2b95b8 100644
--- a/tests/beta.lisp
+++ b/tests/beta.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'beta :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :beta :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 1.8000000000000016d0)
    (MULTIPLE-VALUE-LIST (BETA-PDF 0.1d0 1.0d0 2.0d0)))
diff --git a/tests/cauchy.lisp b/tests/cauchy.lisp
index ec06490b..0e80be72 100644
--- a/tests/cauchy.lisp
+++ b/tests/cauchy.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'cauchy :a 10.0d0)))))
+	   (sample rng :cauchy :a 10.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.03183098861837907d0)
    (MULTIPLE-VALUE-LIST (CAUCHY-PDF 0.0d0 10.0d0)))
diff --git a/tests/chi-squared.lisp b/tests/chi-squared.lisp
index 717b9eb3..97ddcf6f 100644
--- a/tests/chi-squared.lisp
+++ b/tests/chi-squared.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'chi-squared :nu 10.0d0)))))
+	   (sample rng :chi-squared :nu 10.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.43939128946772227d0)
    (MULTIPLE-VALUE-LIST (CHI-SQUARED-PDF 0.5d0 1.0d0)))
diff --git a/tests/dirichlet.lisp b/tests/dirichlet.lisp
index 9a8719ff..4d517f1b 100644
--- a/tests/dirichlet.lisp
+++ b/tests/dirichlet.lisp
@@ -26,7 +26,7 @@
    (MULTIPLE-VALUE-LIST
     (let ((rng (make-random-number-generator +mt19937+ 0))
 	  (alpha #m(1.0d0 2.0d0 3.0d0 4.0d0)))
-      (cl-array (sample rng 'dirichlet :alpha alpha)))))
+      (cl-array (sample rng :dirichlet :alpha alpha)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 1080.0000000000025d0)
    (MULTIPLE-VALUE-LIST
diff --git a/tests/discrete.lisp b/tests/discrete.lisp
index 6d456451..4f533489 100644
--- a/tests/discrete.lisp
+++ b/tests/discrete.lisp
@@ -29,7 +29,7 @@
 	   (RNG
 	    (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'discrete :table table)))))
+	   (sample rng :discrete :table table)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.5d0)
    (MULTIPLE-VALUE-LIST
diff --git a/tests/exponential-power.lisp b/tests/exponential-power.lisp
index ebef61cd..c80e4e1a 100644
--- a/tests/exponential-power.lisp
+++ b/tests/exponential-power.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'exponential-power :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :exponential-power :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.5641895835477557d0)
    (MULTIPLE-VALUE-LIST
diff --git a/tests/exponential.lisp b/tests/exponential.lisp
index 7b90b9c0..7070be58 100644
--- a/tests/exponential.lisp
+++ b/tests/exponential.lisp
@@ -30,7 +30,7 @@
                         (MULTIPLE-VALUE-LIST
                          (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
                            (LOOP FOR I FROM 0 TO 10 COLLECT
-                                 (sample rng 'exponential :mu 10.0d0)))))
+                                 (sample rng :exponential :mu 10.0d0)))))
                        (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 0.1d0)
                                                           (MULTIPLE-VALUE-LIST
                                                            (EXPONENTIAL-PDF
diff --git a/tests/fdist.lisp b/tests/fdist.lisp
index 5ee33e67..47c1501e 100644
--- a/tests/fdist.lisp
+++ b/tests/fdist.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'fdist :nu1 1.0d0 :nu2 2.0d0)))))
+	   (sample rng :fdist :nu1 1.0d0 :nu2 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.1594719884624466d0)
    (MULTIPLE-VALUE-LIST (FDIST-PDF 1.2d0 1.0d0 2.0d0)))
diff --git a/tests/flat.lisp b/tests/flat.lisp
index 15516dcb..90fcd433 100644
--- a/tests/flat.lisp
+++ b/tests/flat.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'flat :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :flat :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 1.0d0)
    (MULTIPLE-VALUE-LIST (FLAT-PDF 1.2d0 1.0d0 2.0d0)))
diff --git a/tests/gamma-randist.lisp b/tests/gamma-randist.lisp
index 0d9b8cc9..d994790f 100644
--- a/tests/gamma-randist.lisp
+++ b/tests/gamma-randist.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'gamma :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :gamma :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST
     (LIST 3.012983063768798d0 2.216796987787054d0
@@ -42,7 +42,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'gamma-mt :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :gamma-mt :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.475614712250357d0)
    (MULTIPLE-VALUE-LIST (GAMMA-PDF 0.1d0 1.0d0 2.0d0)))
diff --git a/tests/gaussian-bivariate.lisp b/tests/gaussian-bivariate.lisp
index 359fd500..8cfb9eaf 100644
--- a/tests/gaussian-bivariate.lisp
+++ b/tests/gaussian-bivariate.lisp
@@ -31,7 +31,7 @@
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
 	   (sample
-	    rng 'gaussian-bivariate
+	    rng :bivariate-gaussian
 	    :sigma-x 1.0d0 :sigma-y 0.75d0 :rho 0.25d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.5548265557970462d0)
diff --git a/tests/gaussian-tail.lisp b/tests/gaussian-tail.lisp
index f8534346..edd37bb1 100644
--- a/tests/gaussian-tail.lisp
+++ b/tests/gaussian-tail.lisp
@@ -30,7 +30,7 @@
                         (MULTIPLE-VALUE-LIST
                          (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
                            (LOOP FOR I FROM 0 TO 10 COLLECT
-                                 (sample rng 'gaussian-tail :a 50.0d0 :sigma 10.0d0)))))
+                                 (sample rng :gaussian-tail :a 50.0d0 :sigma 10.0d0)))))
                        (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
                         (LIST 0.18702270877331703d0)
                         (MULTIPLE-VALUE-LIST
@@ -46,7 +46,7 @@
                         (MULTIPLE-VALUE-LIST
                          (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
                            (LOOP FOR I FROM 0 TO 10 COLLECT
-                                 (sample rng 'ugaussian-tail :a 5.0d0)))))
+                                 (sample rng :ugaussian-tail :a 5.0d0)))))
                        (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
                         (LIST 1.8702270877331704d0)
                         (MULTIPLE-VALUE-LIST (UGAUSSIAN-TAIL-PDF 5.2d0 5.0d0))))
diff --git a/tests/gaussian.lisp b/tests/gaussian.lisp
index 7d9c10d6..a84b83f4 100644
--- a/tests/gaussian.lisp
+++ b/tests/gaussian.lisp
@@ -30,7 +30,7 @@
                         (MULTIPLE-VALUE-LIST
                          (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
                            (LOOP FOR I FROM 0 TO 10 COLLECT
-                                 (sample rng 'gaussian :sigma 10.0d0)))))
+                                 (sample rng :gaussian :sigma 10.0d0)))))
                        (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
                         (LIST 0.039894228040143274d0)
                         (MULTIPLE-VALUE-LIST (GAUSSIAN-PDF 0.0d0 10.0d0)))
@@ -45,7 +45,7 @@
                         (MULTIPLE-VALUE-LIST
                          (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
                            (LOOP FOR I FROM 0 TO 10 COLLECT
-                                 (sample rng 'gaussian-ziggurat :sigma 10.0d0)))))
+                                 (sample rng :gaussian-ziggurat :sigma 10.0d0)))))
                        (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
                         (LIST 0.9772498680518208d0)
                         (MULTIPLE-VALUE-LIST (UGAUSSIAN-P 2.0d0)))
diff --git a/tests/geometric.lisp b/tests/geometric.lisp
index 7db346f5..9362f9fe 100644
--- a/tests/geometric.lisp
+++ b/tests/geometric.lisp
@@ -24,7 +24,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'geometric :probability 0.4d0)))))
+	   (sample rng :geometric :probability 0.4d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.24d0)
    (MULTIPLE-VALUE-LIST (GEOMETRIC-PDF 2 0.4d0)))
diff --git a/tests/gumbel1.lisp b/tests/gumbel1.lisp
index 2d7bd8b0..aa3ac588 100644
--- a/tests/gumbel1.lisp
+++ b/tests/gumbel1.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'gumbel1 :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :gumbel1 :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.29625708964974956d0)
    (MULTIPLE-VALUE-LIST (GUMBEL1-PDF 0.1d0 1.0d0 2.0d0)))
diff --git a/tests/gumbel2.lisp b/tests/gumbel2.lisp
index 5e6399d4..5861ccbd 100644
--- a/tests/gumbel2.lisp
+++ b/tests/gumbel2.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'gumbel2 :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :gumbel2 :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.053625603682851145d0)
    (MULTIPLE-VALUE-LIST (GUMBEL2-PDF 5.0d0 1.0d0 2.0d0)))
diff --git a/tests/hypergeometric-randist.lisp b/tests/hypergeometric-randist.lisp
index 57dd77de..ed8d6e5d 100644
--- a/tests/hypergeometric-randist.lisp
+++ b/tests/hypergeometric-randist.lisp
@@ -24,7 +24,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'hypergeometric :n1 3 :n2 6 :tt 3)))))
+	   (sample rng :hypergeometric :n1 3 :n2 6 :tt 3)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.35714285714285693d0)
    (MULTIPLE-VALUE-LIST (HYPERGEOMETRIC-PDF 0 2 6 3)))
diff --git a/tests/landau.lisp b/tests/landau.lisp
index 201b91b4..e030a1ec 100644
--- a/tests/landau.lisp
+++ b/tests/landau.lisp
@@ -29,7 +29,7 @@
 	  4.681506208977819d0))
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
-      (LOOP FOR I FROM 0 TO 10 COLLECT (sample rng 'landau)))))
+      (LOOP FOR I FROM 0 TO 10 COLLECT (sample rng :landau)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.17331968995860203d0)
    (MULTIPLE-VALUE-LIST (LANDAU-PDF 0.25d0))))
diff --git a/tests/laplace.lisp b/tests/laplace.lisp
index ec58b3ca..a40bee9d 100644
--- a/tests/laplace.lisp
+++ b/tests/laplace.lisp
@@ -30,7 +30,7 @@
                         (MULTIPLE-VALUE-LIST
                          (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
                            (LOOP FOR I FROM 0 TO 10 COLLECT
-                                 (sample rng 'laplace :a 10.0d0)))))
+                                 (sample rng :laplace :a 10.0d0)))))
                        (LISP-UNIT::ASSERT-NUMERICAL-EQUAL (LIST 0.05d0)
                                                           (MULTIPLE-VALUE-LIST
                                                            (LAPLACE-PDF 0.0d0
diff --git a/tests/levy.lisp b/tests/levy.lisp
index e5d68184..a33f9b71 100644
--- a/tests/levy.lisp
+++ b/tests/levy.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'levy :c 1.0d0 :alpha 2.0d0)))))
+	   (sample rng :levy :c 1.0d0 :alpha 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST
     (LIST 2.6941098332360465d0 -0.2939543864467665d0
@@ -42,5 +42,5 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'levy-skew :c 1.0d0 :alpha 2.0d0 :beta 1.0d0))))))
+	   (sample rng :levy-skew :c 1.0d0 :alpha 2.0d0 :beta 1.0d0))))))
 
diff --git a/tests/logarithmic.lisp b/tests/logarithmic.lisp
index b29e5aeb..ad098e0a 100644
--- a/tests/logarithmic.lisp
+++ b/tests/logarithmic.lisp
@@ -24,7 +24,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'logarithmic :probability 0.9d0)))))
+	   (sample rng :logarithmic :probability 0.9d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.15660921511769743d0)
    (MULTIPLE-VALUE-LIST (LOGARITHMIC-PDF 2 0.4d0))))
diff --git a/tests/logistic.lisp b/tests/logistic.lisp
index 4ed7fe38..37672f05 100644
--- a/tests/logistic.lisp
+++ b/tests/logistic.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'logistic :a 10.0d0)))))
+	   (sample rng :logistic :a 10.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.2350037122015945d0)
    (MULTIPLE-VALUE-LIST (LOGISTIC-PDF 0.5d0 1.0d0)))
diff --git a/tests/lognormal.lisp b/tests/lognormal.lisp
index 89088ad4..c0c11f84 100644
--- a/tests/lognormal.lisp
+++ b/tests/lognormal.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'lognormal :zeta 1.0d0 :sigma 2.0d0)))))
+	   (sample rng :lognormal :zeta 1.0d0 :sigma 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.15289833965691607d0)
    (MULTIPLE-VALUE-LIST
diff --git a/tests/multinomial.lisp b/tests/multinomial.lisp
index b0efb30a..82bd5328 100644
--- a/tests/multinomial.lisp
+++ b/tests/multinomial.lisp
@@ -24,7 +24,7 @@
    (MULTIPLE-VALUE-LIST
     (let ((rng (make-random-number-generator +mt19937+ 0))
 	  (p #m(0.1d0 0.2d0 0.3d0 0.4d0)))
-      (cl-array (sample rng 'multinomial :sum 8 :probabilities p)))))
+      (cl-array (sample rng :multinomial :sum 8 :probabilities p)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 8.064000000000026d-5)
    (MULTIPLE-VALUE-LIST
diff --git a/tests/negative-binomial.lisp b/tests/negative-binomial.lisp
index 90d7fd22..aaa2e825 100644
--- a/tests/negative-binomial.lisp
+++ b/tests/negative-binomial.lisp
@@ -24,7 +24,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'negative-binomial :probability 0.4d0 :n 12.0d0)))))
+	   (sample rng :negative-binomial :probability 0.4d0 :n 12.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.0056984767089869d0)
    (MULTIPLE-VALUE-LIST
@@ -42,7 +42,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'pascal :probability 0.4d0 :n 12)))))
+	   (sample rng :pascal :probability 0.4d0 :n 12)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.0056984767089869d0)
    (MULTIPLE-VALUE-LIST (PASCAL-PDF 5 0.4d0 12)))
diff --git a/tests/pareto.lisp b/tests/pareto.lisp
index 326f8618..5d0b022a 100644
--- a/tests/pareto.lisp
+++ b/tests/pareto.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'pareto :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :pareto :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.5116034405707658d0)
    (MULTIPLE-VALUE-LIST (PARETO-PDF 1.5d0 1.3d0 1.0d0)))
diff --git a/tests/poisson.lisp b/tests/poisson.lisp
index 2855d281..f3cb98a2 100644
--- a/tests/poisson.lisp
+++ b/tests/poisson.lisp
@@ -24,7 +24,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'poisson :mu 10.0d0)))))
+	   (sample rng :poisson :mu 10.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.11259903214902009d0)
    (MULTIPLE-VALUE-LIST (POISSON-PDF 8 10.0d0)))
diff --git a/tests/random-number-generators.lisp b/tests/random-number-generators.lisp
index b9ce6b2b..2b838958 100644
--- a/tests/random-number-generators.lisp
+++ b/tests/random-number-generators.lisp
@@ -25,7 +25,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'uniform-fixnum :upperbound 1000)))))
+	   (sample rng :uniform-fixnum :upperbound 1000)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST
     (LIST 0.11177622997750353d0 0.9591667949963206d0
@@ -36,4 +36,4 @@
 	  0.9311084621265104d0))
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +CMRG+ 0)))
-      (LOOP FOR I FROM 0 TO 10 COLLECT (sample rng 'uniform))))))
+      (LOOP FOR I FROM 0 TO 10 COLLECT (sample rng :uniform))))))
diff --git a/tests/rayleigh-tail.lisp b/tests/rayleigh-tail.lisp
index 10ca805f..315e675f 100644
--- a/tests/rayleigh-tail.lisp
+++ b/tests/rayleigh-tail.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'rayleigh-tail :a 1.0d0 :sigma 10.0d0)))))
+	   (sample rng :rayleigh-tail :a 1.0d0 :sigma 10.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.10224317624874313d0)
    (MULTIPLE-VALUE-LIST
diff --git a/tests/rayleigh.lisp b/tests/rayleigh.lisp
index 8dcabc83..a2d05c47 100644
--- a/tests/rayleigh.lisp
+++ b/tests/rayleigh.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'rayleigh :sigma 10.0d0)))))
+	   (sample rng :rayleigh :sigma 10.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.4412484512922977d0)
    (MULTIPLE-VALUE-LIST (RAYLEIGH-PDF 0.5d0 1.0d0)))
diff --git a/tests/shuffling-sampling.lisp b/tests/shuffling-sampling.lisp
index 3a5d9fd1..e1198415 100644
--- a/tests/shuffling-sampling.lisp
+++ b/tests/shuffling-sampling.lisp
@@ -24,16 +24,16 @@
    (MULTIPLE-VALUE-LIST
     (let ((rng (make-random-number-generator +mt19937+ 0))
 	  (v1 #31m(1 2 3 4 5 6 7 8)))
-      (cl-array (sample rng 'shuffle :base v1)))))
+      (cl-array (sample rng :shuffle :base v1)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST #(2 3 5 8))
    (MULTIPLE-VALUE-LIST
     (let ((rng (make-random-number-generator +mt19937+ 0))
 	  (v1 #31m(1 2 3 4 5 6 7 8)))
-      (cl-array (sample rng 'choose-random :src v1 :dest 4)))))
+      (cl-array (sample rng :choose-random :src v1 :dest 4)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST #(8 2 3 8 2 4 8 6 5 6))
    (MULTIPLE-VALUE-LIST
     (let ((rng (make-random-number-generator +mt19937+ 0))
 	  (v1 #31m(1 2 3 4 5 6 7 8)))
-      (cl-array (sample rng 'random-sample :src v1 :dest 10))))))
+      (cl-array (sample rng :random-sample :src v1 :dest 10))))))
diff --git a/tests/spherical-vector.lisp b/tests/spherical-vector.lisp
index 4f874528..35e79bd6 100644
--- a/tests/spherical-vector.lisp
+++ b/tests/spherical-vector.lisp
@@ -29,7 +29,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 4 APPEND
-	   (MULTIPLE-VALUE-LIST (sample rng 'direction-2d))))))
+	   (MULTIPLE-VALUE-LIST (sample rng :direction-2d))))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST
     (LIST 0.9999986835208556d0 -0.0016226387631051197d0
@@ -40,7 +40,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 4 APPEND
-	   (MULTIPLE-VALUE-LIST (sample rng 'direction-2d-trig-method))))))
+	   (MULTIPLE-VALUE-LIST (sample rng :direction-2d-trig-method))))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST
     (LIST -0.09129925750445994d0 0.18782185357162273d0
@@ -51,5 +51,5 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 2 APPEND
-	   (MULTIPLE-VALUE-LIST (sample rng 'direction-3d)))))))
+	   (MULTIPLE-VALUE-LIST (sample rng :direction-3d)))))))
 
diff --git a/tests/tdist.lisp b/tests/tdist.lisp
index 3ac50168..1ea7b75f 100644
--- a/tests/tdist.lisp
+++ b/tests/tdist.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'tdist :nu 10.0d0)))))
+	   (sample rng :tdist :nu 10.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.2546479089470325d0)
    (MULTIPLE-VALUE-LIST (TDIST-PDF 0.5d0 1.0d0)))
diff --git a/tests/weibull.lisp b/tests/weibull.lisp
index fba79104..84770ed0 100644
--- a/tests/weibull.lisp
+++ b/tests/weibull.lisp
@@ -30,7 +30,7 @@
    (MULTIPLE-VALUE-LIST
     (LET ((RNG (MAKE-RANDOM-NUMBER-GENERATOR +MT19937+ 0)))
       (LOOP FOR I FROM 0 TO 10 COLLECT
-	   (sample rng 'weibull :a 1.0d0 :b 2.0d0)))))
+	   (sample rng :weibull :a 1.0d0 :b 2.0d0)))))
   (LISP-UNIT::ASSERT-NUMERICAL-EQUAL
    (LIST 0.24263174972226745d0)
    (MULTIPLE-VALUE-LIST (WEIBULL-PDF 1.5d0 1.3d0 1.0d0)))
-- 
GitLab