Skip to content

Instantly share code, notes, and snippets.

@1ambda
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 1ambda/9509007 to your computer and use it in GitHub Desktop.
Save 1ambda/9509007 to your computer and use it in GitHub Desktop.
lisp example
(defun select (selector)
(remove-if-not selector *person-db*))
(defun make-where-exprs (args)
(loop while args
collect `(equal (getf person ,(pop args)) ,(pop args))))
(defmacro where (&rest args)
`#'(lambda (person)
(and ,@(make-where-exprs args))))
;; CL-USER > (select (where :name "Hoon"))
;; ((:NAME "Hoon" :AGE 26 :ADDRESS "Seoul"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment