While I was doing some programming in Racket, I found that I wanted to be able to define variables in the middle of a cond block, so that I could use the variable in subsequent conditions, without having to add an extra level of nesting. To do this, I created the following macro: (define-syntax (cond/define stx) (syntax-parse stx ;; terminating with else [(_ [(~datum else) expr ...]) #'(begin expr ...)] ;; continuing with define [(_ ((~datum define)name expr) cond ...) #'(let ([name expr]) (c...