FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
Architecture & Design
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
April 01, 2004

Building Little Languages with Macros

(Page 11 of 12)
Apr04: Building Little Languages With Macros


(a)
(define-cbr (f a b)
   (swap a b))

; Produces 2:
(let ((x 1) (y 2))
   (f x y)
   x)

(b)
(define (do-f get1 get2 set1 set2)
   (define-get/set-var a get1 set1)
   (define-get/set-var b get2 set2)
   (swap a b))

(c)
(let ((x 1) (y 2))
   (f x y)
  x)

(d)
(let ((x 1) (y 2))
   (do-f (lambda () x)
         (lambda () y)
         (lambda (v) (set! x v))
         (lambda (v) (set! y v)))
   x)

(e)
(begin
   (define (do-f get1 get2 set1 set2)
      (define-get/set-var a get1 set1)
      (define-get/set-var b get2 set2)
      (swap a b))
   (define-syntax f
      (syntax-rules ()
        ((f actual ...)
         (do-f (lambda () actual)
               ...
               (lambda (v)
                  (set! actual v))
               ...)               ))))

Example 8: Call-by-reference.

Previous Page | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 Next Page
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK