t3x.org / sketchy / library / case.html
SketchyLISP
Reference
  Copyright (C) 2007
Nils M Holm

case

Conformance: R5RS Scheme

Purpose: Select cases.

Arguments:
KEY - key used to select a case
DATA - possible matches for this case
EXPR - value for this case

Implementation:

(define-syntax case
  (syntax-rules (else)
    ((_ key (else expr))
       expr)
    ((_ key (data expr))
       (if (memv key 'data)
           expr
           (bottom '(no default in case))))
    ((_ key (data1 expr1) (data2 expr2) ...)
       (if (memv key 'data1)
           expr1
           (case key (data2 expr2) ...)))))

Example:

; Example needs pre-loaded image
(case 'c ((a b) 'a-or-b) ((c d) 'c-or-d)) --> c-or-d

See also:
if.