;; ;; 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)))) ;; ;; The macro "boolean" turns its argument into either #t or #f ;; (define-syntax boolean (syntax-rules () ((boolean x)(and x #t)))) ;; ;; The macro "pipify" just provides some syntactic sugar around pipejoin. ;; (define-syntax pipify (syntax-rules () ((pipify x) (if (pair? x) (pipejoin x) x))))