#lang racket
(define-syntax evcase
(syntax-rules ()
[(_ key-expr) (error 'evcase "missing case")]
[(_ key-expr [val body] clauses ...)
(if (equal? key-expr val) body
(evcase key-expr clauses ...))]))
(define (func x)
(evcase 42
[(+ x 2) #f]
[(* 6 7) #t]))