aand.ss
#lang scheme/base

(define-syntax-rule (aand test result yes ...)
  (let ((result test))
    (and result yes ...)))

(define-syntax-rule (aif test result yes no)
  (let ((result test))
    (if result yes no)))

(define-syntax-rule (awhen test result yes ...)
  (aif test result (begin yes ...) (void)))

(define-syntax-rule (and0 test result extras ...)
  (let ((result test))
    (when result extras ...)
    result))

(provide aand aif awhen and0)