www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

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 …)))])))