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!