chiark / gitweb /
base: compile-time-defun should define in the interpreter.
[lisp] / mdw-base.lisp
index e87c51191ab1e155c07758839b8b1c9ba26c7efc..73f85e73d95f0bfd84f9371d6d2c0783ab72c888 100644 (file)
@@ -28,7 +28,8 @@
 
 (defpackage #:mdw.base
   (:use #:common-lisp)
 
 (defpackage #:mdw.base
   (:use #:common-lisp)
-  (:export #:compile-time-defun
+  (:export #:unsigned-fixnum
+          #:compile-time-defun
           #:show
           #:stringify #:mappend #:listify #:fix-pair #:pairify #:parse-body
           #:whitespace-char-p
           #:show
           #:stringify #:mappend #:listify #:fix-pair #:pairify #:parse-body
           #:whitespace-char-p
@@ -43,13 +44,20 @@ (defpackage #:mdw.base
 
 (in-package #:mdw.base)
 
 
 (in-package #:mdw.base)
 
+;;;--------------------------------------------------------------------------
+;;; Useful types.
+
+(deftype unsigned-fixnum ()
+  "Unsigned fixnums; useful as array indices and suchlike."
+  `(mod ,most-positive-fixnum))
+
 ;;;--------------------------------------------------------------------------
 ;;; Some simple macros to get things going.
 
 (defmacro compile-time-defun (name args &body body)
   "Define a function which can be used by macros during the compilation
    process."
 ;;;--------------------------------------------------------------------------
 ;;; Some simple macros to get things going.
 
 (defmacro compile-time-defun (name args &body body)
   "Define a function which can be used by macros during the compilation
    process."
-  `(eval-when (:compile-toplevel :load-toplevel)
+  `(eval-when (:compile-toplevel :load-toplevel :execute)
      (defun ,name ,args ,@body)))
 
 (defmacro show (x)
      (defun ,name ,args ,@body)))
 
 (defmacro show (x)
@@ -111,7 +119,9 @@ (compile-time-defun pairify (x &optional (y nil defaultp))
 (defun whitespace-char-p (ch)
   "Return whether CH is a whitespace character or not."
   (case ch
 (defun whitespace-char-p (ch)
   "Return whether CH is a whitespace character or not."
   (case ch
-    ((#\space #\tab #\newline #\return #\vt #\formfeed) t)
+    ((#\space #\tab #\newline #\return #\vt
+             #+cmu #\formfeed
+             #+clisp #\page) t)
     (t nil)))
 
 (declaim (ftype (function nil ()) slot-unitialized))
     (t nil)))
 
 (declaim (ftype (function nil ()) slot-unitialized))