X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/lisp/blobdiff_plain/e2a3c9236277551b174d522db7161c4eec29f97f..4b6a6387f82f1bb2058d642dcbd7040ce2578cea:/mdw-base.lisp?ds=inline diff --git a/mdw-base.lisp b/mdw-base.lisp index 269b398..59ea692 100644 --- a/mdw-base.lisp +++ b/mdw-base.lisp @@ -30,14 +30,17 @@ (defpackage #:mdw.base (:use #:common-lisp) (:export #:compile-time-defun #:show - #:stringify #:listify #:fix-pair #:pairify #:parse-body + #:stringify #:mappend #:listify #:fix-pair #:pairify #:parse-body #:whitespace-char-p #:slot-uninitialized #:nlet #:while #:case2 #:ecase2 #:with-gensyms #:let*/gensyms #:with-places #:locp #:locf #:ref #:with-locatives #:update-place #:update-place-after - #:incf-after #:decf-after)) + #:incf-after #:decf-after + #:fixnump) + #+cmu (:import-from #:extensions #:fixnump)) + (in-package #:mdw.base) ;;;-------------------------------------------------------------------------- @@ -66,6 +69,12 @@ (defun stringify (str) (t (with-output-to-string (s) (princ str s))))) +(defun mappend (function list &rest more-lists) + "Apply FUNCTION to corresponding elements of LIST and MORE-LISTS, yielding + a list. Return the concatenation of all the resulting lists. Like + mapcan, but nondestructive." + (apply #'append (apply #'mapcar function list more-lists))) + (compile-time-defun listify (x) "If X is a (possibly empty) list, return X; otherwise return (list X)." (if (listp x) x (list x))) @@ -124,6 +133,13 @@ (compile-time-defun parse-body (body &key (allow-docstring-p t)) (and decls (list (cons 'declare decls))) forms)))))))) +#-cmu +(progn + (declaim (inline fixnump)) + (defun fixnump (object) + "Answer non-nil if OBJECT is a fixnum, or nil if it isn't." + (typep object 'fixnum))) + ;;;-------------------------------------------------------------------------- ;;; Generating symbols.