;;; happy-birthday.el -- -*- lexical-binding: t -*- (defmacro seb (&rest x) (let ((r) (w)) (dolist (e x) (cond ((eq e '!) (push ?a w)) ((eq e '!?) (push (intern (apply 'string w)) r) (setf w nil)) ((eq e '()) (setf (car w) (1+ (car w)))))) `(quote ,r))) (seb ! () ! () () () () ! () () () () () () () () () () () () () () () () () () !? ! () () () () () () () () () () () () () () () () () () () () () () () () ! ! () () () ! () () () () () () () ! () () () () () () () () () () () () () () () () () () () ! () () () () () () () () () () () () () () () () () ! () () () () () () () () ! () !? ! () () () () () () () () () () () () () () () () () () () () () () () () ! () () () () () () () () () () () () () () () ! () () () () () () () () () () () () () () () ! ! () () () () () () () !?) (mapcan (lambda (w) (let (r) (push '!? r) (mapc (lambda (c) (cl-loop for i below (- c ?a) do (push '() r)) (push '! r)) w) r)) (reverse (string-split "happy birthday seb")))