Thank you for your comment

Beau­tiful Racket / explainers

lang.rkt
#lang br
1
#lang br
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
1
#lang reader "lang.rkt"
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))
1
2
3
4
5
6
7
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
1
#lang reader "lang.rkt"
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin)
1
2
3
4
5
6
7
8
9
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin)
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction)
1
2
3
4
5
6
7
8
9
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction)
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
1
#lang reader "lang.rkt"
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
42.0
1
2
#lang reader "lang.rkt"
42.0
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction #%datum)
1
2
3
4
5
6
7
8
9
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction #%datum)
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction)

(provide (rename-out [new-datum #%datum]))
(define-macro (new-datum . D)
  (with-pattern ([NEW-D (let ([val (syntax->datum #'D)])
                          (if (and (integer? val)
                                   (inexact? val))
                              (inexact->exact val)
                              val))])
    #'(#%datum . NEW-D)))
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin  #%top-interaction)

(provide (rename-out [new-datum #%datum]))
(define-macro (new-datum . D)
  (with-pattern ([NEW-D (let ([val (syntax->datum #'D)])
                          (if (and (integer? val)
                                   (inexact? val))
                              (inexact->exact val)
                              val))])
    #'(#%datum . NEW-D)))
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
42.0
1
2
#lang reader "lang.rkt"
42.0
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
(- 42 10)
1
2
#lang reader "lang.rkt"
(- 42 10)
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction #%datum -)
1
2
3
4
5
6
7
8
9
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin  #%top-interaction #%datum -)
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction #%datum -)

(provide (rename-out [new-app #%app]))
(define-macro (new-app ID . ARGS)
  (with-pattern ([SGRA (reverse (syntax->list #'ARGS))])
    #'(#%app ID . SGRA)))
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin  #%top-interaction #%datum -)

(provide (rename-out [new-app #%app]))
(define-macro (new-app ID . ARGS)
  (with-pattern ([SGRA (reverse (syntax->list #'ARGS))])
    #'(#%app ID . SGRA)))
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
(- 42 10)
1
2
#lang reader "lang.rkt"
(- 42 10)
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction #%datum - #%app)
1
2
3
4
5
6
7
8
9
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin  #%top-interaction #%datum - #%app)
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
(- 42 x)
1
2
#lang reader "lang.rkt"
(- 42 x)
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction #%datum - #%app)

(provide define (rename-out [my-top #%top]))
(define-macro (my-top . ID)
  (if (identifier-binding #'ID) #'ID #'25))
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin  #%top-interaction #%datum - #%app)

(provide define (rename-out [my-top #%top]))
(define-macro (my-top . ID)
  (if (identifier-binding #'ID) #'ID #'25))
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
(- 42 x)
1
2
#lang reader "lang.rkt"
(- 42 x)
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
(define x 18)
(- 42 x)
1
2
3
#lang reader "lang.rkt"
(define x 18)
(- 42 x)
copy to clipboard
lang.rkt
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin #%top-interaction #%datum - #%app #%top)
1
2
3
4
5
6
7
8
9
#lang br
(provide read-syntax)
(define (read-syntax path port)
  (datum->syntax #f
                 `(module lang-mod "lang.rkt"
                    ,@(for/list ([datum (in-port read port)])
                        datum))))

(provide #%module-begin  #%top-interaction #%datum - #%app #%top)
copy to clipboard
lang-test.rkt
#lang reader "lang.rkt"
(- 42 x)
1
2
#lang reader "lang.rkt"
(- 42 x)
copy to clipboard
← prev next →