[comp.emacs] a new version of define-cxxr-function

merlyn@intelob.intel.com (Randal L. Schwartz @ Stonehenge) (10/04/88)

Here's something for you hackers that want cXXr functions that run
fast.  Enjoy.

;;; inspired by jrose@sun.com (John Rose)
;;; Make sure Common Lisp c[ad]+r functions are defined,
;;; and not as macros!
;;; LastEditDate="Mon Oct  3 13:09:13 1988" by merlyn

(provide 'cl-cadr)
(require 'byte-compile "bytecomp")

(defun define-cxxr-function (xx)
  "Given string XX, create standard function cXXr."
  (and (not (string-match "^[ad][ad]+$" xx))
       (error "define-cxxr-function: invalid argument"))
  (let ((f (intern (format "c%sr" xx)))
	(form 'x))
    (while (> (length xx) 0)
      (setq form (list (intern (format "c%sr" (substring xx -1))) form)
	    xx (substring xx 0 -1)))
    (fset f (byte-compile-lambda (list 'lambda '(x)
				       "Created by define-cxxr-function."
				       form)))))

(mapcar 'define-cxxr-function
	'("aa" "ad" "da" "dd"
	  "aaa" "aad" "ada" "add" "daa" "dad" "dda" "ddd"
	  "aaaa" "aaad" "aada" "aadd" "adaa" "adad" "adda" "addd"
	  "daaa" "daad" "dada" "dadd" "ddaa" "ddad" "ddda" "dddd"))
-- 
Randal L. Schwartz, Stonehenge Consulting Services (503)777-0095
on contract to BiiN Technical Information Services (for now :-),
in a former Intel building in Hillsboro, Oregon, USA
<merlyn@intelob.intel.com> or ...!tektronix!inteloa[!intelob]!merlyn
Standard disclaimer: I *am* my employer!