(define-syntax quasiquote (syntax-rules (unquote unquote-splicing) ((_ ((unquote x) . xs)) (cons x (quasiquote xs))) ((_ ((unquote-splicing x) . xs)) (append x (quasiquote xs))) ((_ (unquote x)) x) ((_ (x . xs)) (cons (quasiquote x) (quasiquote xs))) ((_ x) (quote x))))