cond-let.rkt (601B)
1 #lang typed/racket 2 (require "typed-untyped.rkt") 3 (define-typed/untyped-modules #:no-test 4 (provide cond-let) 5 6 (require (for-syntax syntax/parse 7 phc-toolkit/untyped/aliases)) 8 9 (define-syntax (cond-let stx) 10 (syntax-parse stx 11 [(_) 12 #'(typecheck-fail #,stx)] 13 [(_ #:let bindings:expr clause …) 14 #'(let bindings (cond-let clause …))] 15 [(_ [condition:expr (~seq #:else-let binding …) … . body] clause …) 16 #'(if condition 17 (begin . body) 18 (let (binding … …) 19 (cond-let clause …)))])))