[plt-scheme] with-struct
On Oct 21, Carl Eastlund wrote:
> On Wed, Oct 21, 2009 at 10:04 PM, Eli Barzilay <eli at barzilay.org> wrote:
> > Well, it should be easy to make that `with-foo' macro detect when the
> > value expression is really an identifier, and bind names like this:
> >
> > (with-posn a
> > (printf "<~s,~s>" a.x a.y))
> >
> > But that's getting too close to something like a real `.' infix syntax
> > (IIRC, Jens had implemented something like that).
>
> So this macro is going to have different lexical binding structure
> if its argument -- an expression -- happens to be in the form of an
> identifier, than if it's any other expression?
>
> I am wary of such voodoo.
Me too, but it shouldn't be too problematic, since you still get the
usual lexical scope. For example, have it bind `a.x' and `a.y' and
make `x' and `y' aliases for them, so that the latter are always
getting the closest `with-*' values.
But in any case, it looks to me like there's too many variables so a
good design for this thing is going to be difficult.
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!