|
| 1 | +(module core-syntax '#%kernel |
1 | 2 |
|
2 | | -;;---------------------------------------------------------------------- |
3 | | -;; quasiquote, and, or |
| 3 | + ; ====================================================================== |
| 4 | + ; Many of the base syntactic forms of Racket-- things like `and`, `let`, |
| 5 | + ; and `cond`. These are written together in a single module for startup |
| 6 | + ; time reasons, and this module forms a nice base for defining the rest |
| 7 | + ; of `#lang racket/base`. |
| 8 | + ; ====================================================================== |
| 9 | + ; |
4 | 10 |
|
5 | | -(module qq-and-or '#%kernel |
6 | 11 | (#%require (for-syntax "stx.rkt" '#%kernel)) |
| 12 | + |
| 13 | + (#%provide let*-values |
| 14 | + let let* letrec |
| 15 | + quasiquote |
| 16 | + and or) |
| 17 | + |
| 18 | + ; -------------------------------------------------- |
| 19 | + ; |
| 20 | + ; |
| 21 | + ; ;;; ;;;; |
| 22 | + ; ; ; ; |
| 23 | + ; ; ; ; |
| 24 | + ; ; ;;; ; ; ;; ; ;;; ; ;; ;; ;;;; |
| 25 | + ; ; ; ; ;;;;;; ;;;;;; ; ; ;; ; ;; ;; ; ; ; |
| 26 | + ; ; ; ; ; ; ; ; ; ; ; ; ; ; |
| 27 | + ; ; ;;;;;; ; ; ; ; ; ; ; ; ;; |
| 28 | + ; ; ; ; ; ; ; ; ; ; ; ;; |
| 29 | + ; ; ; ; ; ; ; ; ; ; ; ; |
| 30 | + ; ; ; ; ; ; ; ; ; ; ; ; ; |
| 31 | + ; ;;; ;;;; ;;; ; ;; ; ; ; ; ;;;; |
| 32 | + ; |
| 33 | + ; |
| 34 | + ; let, let*, letrec, let-values, let-syntax, ... |
| 35 | + ; |
| 36 | + |
7 | 37 |
|
8 | 38 | (define-syntaxes (let*-values let let* letrec) |
9 | 39 | (let-values ([(lambda-stx) (quote-syntax lambda-stx)] |
|
194 | 224 | (lambda (stx) (go stx #f #t (quote-syntax let*-values))) |
195 | 225 | (lambda (stx) (go stx #f #f (quote-syntax letrec-values))))))) |
196 | 226 |
|
| 227 | + ; -------------------------------------------------- |
| 228 | + ; |
| 229 | + ; |
| 230 | + ; ;;;; ;;;; |
| 231 | + ; ; ; ; ; |
| 232 | + ; ; ; ; ; |
| 233 | + ; ; ; ; ; |
| 234 | + ; ; ; ; ; |
| 235 | + ; ; ; ; ; |
| 236 | + ; ; ;; ; ;; |
| 237 | + ; ;;; ; ;;; ; |
| 238 | + ; ; ; |
| 239 | + ; ; ; |
| 240 | + ; ; ; |
| 241 | + ; |
| 242 | + ; |
| 243 | + ; quasiquote |
| 244 | + ; |
| 245 | + |
197 | 246 | (define-values (qq-append) |
198 | 247 | (lambda (a b) |
199 | 248 | (if (list? a) |
|
439 | 488 | form) |
440 | 489 | in-form))))) |
441 | 490 |
|
| 491 | + ; -------------------------------------------------- |
| 492 | + ; |
| 493 | + ; |
| 494 | + ; ; ; |
| 495 | + ; ; ; |
| 496 | + ; ; ; |
| 497 | + ; ;;;; ; ;;; ;;;; ; ;; ; ;;; |
| 498 | + ; ; ; ;; ; ; ; ; ; ; ;; ; |
| 499 | + ; ; ; ; ; ; ; ; ; ; ; ; |
| 500 | + ; ; ; ; ; ; ; ; ; ; ; |
| 501 | + ; ; ; ; ; ; ; ; ; ; ; |
| 502 | + ; ; ; ; ; ; ; ; ; ; ; |
| 503 | + ; ; ;; ; ; ; ;; ; ; ; ; |
| 504 | + ; ;;; ; ; ; ;;; ; ; ;; ; |
| 505 | + ; |
| 506 | + ; |
| 507 | + ; `and` and `or` |
| 508 | + ; |
| 509 | + |
442 | 510 | (define-syntaxes (and) |
443 | 511 | (let-values ([(here) (quote-syntax here)]) |
444 | 512 | (lambda (x) |
|
501 | 569 | "bad syntax" |
502 | 570 | x)))))))) |
503 | 571 |
|
504 | | - (#%provide let*-values |
505 | | - let let* letrec |
506 | | - quasiquote and or)) |
| 572 | + ; |
| 573 | + ; -------------------------------------------------- |
| 574 | + ) |
0 commit comments