Advertisement
Guest User

Untitled

a guest
Feb 11th, 2025
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.78 KB | None | 0 0
  1. (defparameter +define-variable-label+ :define-variable)
  2.  
  3. (defmacro steroid-let (&rest forms)
  4.   (flet ((filter-definitions (form-list &optional (definitions? t))
  5.            (funcall (if definitions?
  6.                       #'remove-if-not
  7.                       #'remove-if)
  8.                     (lambda (form)
  9.                       (and (eq (first form) +define-variable-label+)
  10.                            (= (length form) 3)))
  11.                     form-list)))
  12.     (let ((definitions (filter-definitions forms))
  13.           (other-forms (filter-definitions forms nil)))
  14.       `(let ,(map 'list #'rest definitions) ,@other-forms))))
  15.  
  16. ;; Usage
  17. (steroid-let
  18.   (:define-variable x 2)
  19.   (:define-variable c 1)
  20.   (setf c (+ c x))
  21.   (:define-variable y "asdf")
  22.   (format t "~A: ~A~&" c y))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement