#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)