(define-syntax cond-set! (syntax-rules () ((_ pred var init) (if pred (set! var init))) ((_ pred var1 init1 var2 init2) (if pred (begin (set! var1 init1) (set! var2 init2)))) ((_ pred var1 init1 var2 init2 ...) (let ((p pred)) (if p (begin (cond-set! p var1 init1) (cond-set! p var2 init2 ...))))))) (let ((test 5) (v1 0) (v2 0) (v3 0) (v4 0) (v5 0)) (cond-set! (> test 4) v1 1 v2 2 v3 3 v4 4 v5 5) (for-each display (list v1 v2 v3 v4 v5)))