Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defparameter +define-variable-label+ :define-variable)
- (defmacro steroid-let (&rest forms)
- (flet ((filter-definitions (form-list &optional (definitions? t))
- (funcall (if definitions?
- #'remove-if-not
- #'remove-if)
- (lambda (form)
- (and (eq (first form) +define-variable-label+)
- (= (length form) 3)))
- form-list)))
- (let ((definitions (filter-definitions forms))
- (other-forms (filter-definitions forms nil)))
- `(let ,(map 'list #'rest definitions) ,@other-forms))))
- ;; Usage
- (steroid-let
- (:define-variable x 2)
- (:define-variable c 1)
- (setf c (+ c x))
- (:define-variable y "asdf")
- (format t "~A: ~A~&" c y))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement