summaryrefslogtreecommitdiff
path: root/scheme/define-ct.ss
blob: ead89c20c5d28bd3c570e0b20a28c490fde40e5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
;;; how to define a static table from a dynamic one

(import (rnrs) (sweet-macros) (table) (ikarus))

(def-syntax define-ct
  (syntax-match (define)
    (sub (define-ct kw (define name value) ...)
         #'(def-syntax kw
             (let ((t (tbl (name value) ...)))
               (syntax-match (name ...)
                (sub (kw name) (datum->syntax #'kw (t 'name))) ...))))))
(define-ct example
  (define x 1)
  (define y (* x 2)))

(pretty-print (syntax-expand
(define-ct example
  (define x 1)
  (define y (* x 2)))))

(display (list (example x) (example y)))