#lang racket (require [only-in plait test test/exn error print-only-errors]) (define-syntax my-cond (syntax-rules () [(my-cond) (error 'my-cond "missing case")] [(my-cond [q0 a0] [q1 a1] ...) (if q0 a0 (my-cond [q1 a1] ...))])) (define (len lst) (my-cond [(empty? lst) 0] [(cons? lst) (+ 1 (len (rest lst)))])) (test (len '(1 2 3)) 3)