aand.rkt
#lang racket/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)