#lang scheme/base (require (for-syntax scheme/base)) (provide rand) (define-syntax (rand stx) (syntax-case stx () [(_ expr ...) (let ([n (length (syntax->list #'(expr ...)))]) (with-syntax ([(num ...) (for/list ([i (in-range n)]) i)] [n n]) (quasisyntax/loc stx (case (random n) [(num) expr] ...))))]))