src/chili-dogs.lisp @ f9fec2ff0ff5

Add assocar/assocdr/rassocar/rassocdr accessors
author Steve Losh <steve@stevelosh.com>
date Thu, 08 Apr 2021 20:29:23 -0400
parents 54ec08936d37
children (none)
(in-package :losh.chili-dogs)

(defmacro defun-inlineable (name &body body)
  "Like `defun-inline`, but declaims `name` to be `notinline` afterword.

  This is useful when you don't want to inline a function everywhere, but *do*
  want to have the ability to inline it on demand with (declare (inline ...)).

  "
  `(progn
     (declaim (inline ,name))
     (defun ,name ,@body)
     (declaim (notinline ,name))
     ',name))

(defmacro defun-inline (name args &body body)
  "Like `defun`, but declaims `name` to be `inline`."
  `(progn
     (declaim (inline ,name))
     (defun ,name ,args ,@body)
     ',name))