X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/lisp/blobdiff_plain/f4df6cf47a48e12e3e18d3d2a6285147f6f1c147..4b6a6387f82f1bb2058d642dcbd7040ce2578cea:/mdw-base.lisp?ds=sidebyside diff --git a/mdw-base.lisp b/mdw-base.lisp index 0b68b8d..59ea692 100644 --- a/mdw-base.lisp +++ b/mdw-base.lisp @@ -30,7 +30,7 @@ (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 @@ -69,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)))