Per Abrahamsen <abraham(a)dina.kvl.dk> writes:
 I'll ask RMS first.  
 
 The names (like set-standard) are way out of the custom namespace. 
I couldn't think of any other applications than the XEmacs options
file rewrite and alternative interfaces to customize, which RMS didn't
think was enough to warrant an all new API.
So I put the functions within the custom namespace:
;;; Properties
;;
;; User options have up to three extra values, which are manipulated
;; using functions similar to `default-value', `default-boundp' and
;; `set-default'.  
;;
;; These values are:
;; 
;; `standard': 
;;    The standard value for the user option as specified by the
;;    package designer in the `defcustom' declaration.
;; `customized':
;;    The value set by the user through the customize interface in
;;    this session.
;; `saved':
;;    The value saved by the user in any session.
;;
;; These are represented by the symbol properties `standard-value',
;; `customized-value', and `saved-value'.  The value of the symbol
;; properties are nil if the symbol hasn't such a property, and a
;; cons-cell otherwise.  The car of the cons-cell should be an
;; expression which, when evaluated, will yield the `standard',
;; `customized', or `saved' value.  The cdr of the cons-cell is not
;; used. 
;; 
;; The use of a cons-cell is to make it possible to distingish `no
;; value' from a nil value.
;; 
;; Evaluating the car makes it possible to have the value depend on
;; circumstances.  This is particularly useful for the standard value,
;; which may depend on the setting of some other option or the
;; availability of a specific feature.
(defun custom-set-standard (symbol value)
  "Set the standard value of SYMBOL to VALUE."
  (put symbol 'standard-value (cons (custom-quote value) nil)))
(defun custom-standard-value (symbol)
  "The standard value of SYMBOL."
  (eval (car (get symbol 'standard-value))))
(defun custom-standard-boundp (symbol)
  "Non-nil if SYMBOL has a standard value."
  (get symbol 'standard-value))
(defun custom-set-customized (symbol value)
  "Set the customized value of SYMBOL to VALUE."
  (put symbol 'customized-value (cons (custom-quote value) nil)))
(defun custom-customized-value (symbol)
  "The customized value of SYMBOL."
  (eval (car (get symbol 'customized-value))))
(defun custom-customized-boundp (symbol)
  "Non-nil if SYMBOL has a customized value."
  (get symbol 'customized-value))
(defun custom-set-saved (symbol value)
  "Set the saved value of SYMBOL to VALUE."
  (put symbol 'saved-value (cons (custom-quote value) nil)))
(defun custom-saved-value (symbol)
  "The saved value of SYMBOL."
  (eval (car (get symbol 'saved-value))))
(defun custom-saved-boundp (symbol)
  "Non-nil if SYMBOL has a saved value."
  (get symbol 'saved-value))