[gambit-list] address of var

Taylor R Campbell campbell at mumble.net
Sun Feb 15 13:05:41 EST 2009


   Date: Sun, 15 Feb 2009 00:45:46 -0800
   From: lowly coder <lowlycoder at huoyanjinjing.com>

   suppose I have:

   int foo;

   bar(&foo); <-- I want to duplicate this function call


   suppose now, I have foo and bar in scheme land; how do I make the above
   function call? grepping for "\&" in gambit-c.txt brings up the #& box
   syntax, but I don't think that's what I want

The locations of variables are not first-class objects.  The language
does not support directly reifying them like C can.  If you have built
a location abstraction, say

(define-record-type <location>
    (make-location reader writer)
    location?
  (reader location.reader)
  (writer location.writer))

(define (location-value location) ((location.reader location)))
(define (set-location-value! location value)
  ((location.writer location) value)),

then you can reify the location of a variable <v> with

(make-locative (lambda () <v>)
               (lambda (value) (set! <v> value))).

On the other hand, your program would probably be clearer if you just
used boxes to begin with.



More information about the Gambit-list mailing list