-
Notifications
You must be signed in to change notification settings - Fork 0
/
old.txt
86 lines (57 loc) · 1.71 KB
/
old.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
;; (define-syntax (mylet-param stx)
;; (syntax-case stx ()
;; [(_ a ...) #'([(q) (values 1)])]
;; ))
;; (define-syntax mylet
;; (syntax-rules ()
;; [(_ () body ...) (begin body ...)]
;; [(_ (a ...) body ... ) (let-values ([mylet-param a] ...) body ...)]
;; ))
(print (caar '( ,x)))
(print (caar '( (unquote x))))
(display "\n")
(html (body (p ,x) (a ,y)))
(html (body (p (a (@ (href ,x)) ,y)) ))
(html (body (p (a (@ (href ,x)) ,y)) ... ))
[(html (body (p (a (@ (href ,x)) ,y)) ... ))
(map (lambda (x y) (cons x y)) x y)]
[(html (body (p (a (@ (href ,x)) ,y)) ... ))
(cons x y)]
(define-syntax mywhen
(syntax-rules ()
;; [(_ test e e* ...)
;; (if test
;; (begin e e* ...)
;; #f)]
;; [(_ ((unquote x) ...)) `(,(quote x) ...)]
[(_ ()) '()]
[(_ ((unquote x) y ...)) (cons (quote x) (mywhen (y ...)))]
[(_ ((x ...) y ...)) `(,@(mywhen (x ...) ) ,@(mywhen ( y ...)))]
[(_ (_ y ...)) (mywhen (y ...))]
))
;; (mywhen #t 6)
;; (mywhen (,a ,b ,c))
;; (mywhen (html (body (p ,x))))
(mywhen (,z html ( ,x 4) 5 ,y))
(define-syntax myquery
(syntax-rules ()
[(_ ()) '()]
[(_ ((x ...) y ...) ) 2]
[(_ ((x ...) ) ) 3]
;; [(_ (x y ...) ) ]
))
(myquery (a))
(define-syntax mywith
(syntax-rules ()
[(_ input () body) body]
[(_ input ((x ...) y ...) body) body]
[(_ input (x y ...) body) body]
;; [(_ ((unquote x) ...)) `(,(quote x) ...)]
[(_ ()) '()]
[(_ ((unquote x) y ...)) (cons (quote x) (mywhen (y ...)))]
[(_ ((x ...) y ...)) `(,@(mywhen (x ...) ) ,@(mywhen ( y ...)))]
[(_ (_ y ...)) (mywhen (y ...))]
))
(mywith '(html (body (p "a") (p "b")))
;(html (body (p ,x)))
x)