PasteRack.org
Paste # 31407
2020-04-07 19:57:11

Fork as a new paste.

Paste viewed 629 times.


Embed:

  1. #lang racket
  2. (define-syntax-rule (evcase v [tv ex ...] ...)
  3.   (let ([the-v v]) ; prevent repeated evaluation
  4.     (cond
  5.       [(equal? the-v tv)
  6.        (begin ex ...)] ...
  7.       [else (error 'evcase "unknown value")])))
  8.  
  9. (define-values (a b c) (values 1 2 3))
  10.  
  11. (define (func arg)
  12.   (evcase arg
  13.     [a a]
  14.     [b b]
  15.     [c c]))
  16.  
  17. (define (crash)
  18.   (func 4))
  19.  
  20. (crash)

=>

evcase: unknown value