(defun read-funk (strm)
  "Return the next key/value pair from the 'funk' stream."
  (let* ((name (read strm nil strm))
         (value (read strm nil strm)))
    (if (or (eq name strm) (eq value strm))
	strm ; end of file
        (list name value))))

(defun load-funk (pn)
  "From Hoehle's idea"
  (with-open-file (strm pn)
    (do ((x (read-funk strm) (read-funk strm))
         (lst nil (cons (first x) lst)))
        ((eq x strm) lst)
        ;; Here's the important part!!!
        (setf (symbol-function (first x))
	      (let ((value (second x))) #'(lambda () value))))))

;;; --- end of file ---
