;; ;; The macro "and-." expands to a pair unless its second argument is #f ;; or (if a third argument is given) the third argument is #f ;; (define-syntax and-. (syntax-rules () ((and-. x y) (and y (cons 'x y))) ((and-. x y z) (and z (cons 'x y))))) ;; ;; The macro "filter-true" filters all elements equal to #f from a list. ;; (define-syntax filter-true (syntax-rules () ((filter-true lst) (filter (lambda(x) x) lst))))