(defun mkstr (&rest args) (with-output-to-string (s) (dolist (a args)(princ a s)))) (mkstr pi " pieces of " 'pi) (defun symb (&rest args) (values (intern (apply #'mkstr args)))) (symb 'ar "Madi" #\L #\L 0) (defun group (source n) (if (zerop n) (error "zero length")) (labels ((rec (source acc) (let ((rest (nthcdr n source))) (if (consp rest) (rec rest (cons (subseq source 0 n) acc)) (nreverse (cons source acc)))))) (if source (rec source nil) nil))) (group '(a b c d e f g) 2)