| 1 |
|
|---|
| 2 | (define-syntax overides
|
|---|
| 3 | (syntax-rules ()
|
|---|
| 4 | ((_ 1 (name pname ...) (method ...))
|
|---|
| 5 | (define-syntax name
|
|---|
| 6 | (syntax-rules (more go)
|
|---|
| 7 | ((_ more mname mmethod)
|
|---|
| 8 | (overides 1 (mname name pname ...) (method ... mmethod)))
|
|---|
| 9 | ((_ go)
|
|---|
| 10 | (letrec* ((full-path '(name pname ...))
|
|---|
| 11 | (method (lambda () (print full-path 'method))) ...)
|
|---|
| 12 | (method) ...)))))
|
|---|
| 13 | ((_ name method)
|
|---|
| 14 | (overides 1 (name) (method)))))
|
|---|
| 15 |
|
|---|
| 16 | (overides one test)
|
|---|
| 17 | (one more two test)
|
|---|
| 18 | (print "===")
|
|---|
| 19 | (one go)
|
|---|
| 20 | (print "===")
|
|---|
| 21 | (two go)
|
|---|