UNB/ CS/ David Bremner/ teaching/ cs4613/ lectures/ lecture05/ my-cond1.rkt
#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)