add1

Vincent


On Thu, 03 Sep 2015 08:05:49 -0500,
Robby Findler wrote:
> 
> This sounds great to me! This has been a real source of confusion for
> many over the years.
> 
> Robby
> 
> 
> On Wed, Sep 2, 2015 at 7:30 PM, Matthew Flatt <[email protected]> wrote:
> > As an experiment, I've changed the ".zo" writer and reader to preserve
> > source locations and 'paren-shape properties for syntax objects.
> >
> > Saving source locations can be helpful in a couple of situations:
> >
> >  * For a macro implementor, when a macro is implemented by a module
> >    that is compiled to ".zo" form and something goes wrong with a use
> >    of the macro in another module, the expansion error can more likely
> >    point to parts of the macro implementation.
> >
> >  * Unusual macros that depend on source-location information, such as
> >    Scribble's `racketblock`, tend not to compose with other macros.
> >    While a macro like `racketblock` can expand in a way that preserves
> >    needed source locations, macros that expand to `racketblock` tend to
> >    go wrong when compiled to ".zo" form. Similarly, a macro might treat
> >    `[...]` or `{...}` specially, based on the 'paren-shape property,
> >    and then other macros that expand to that one don't work right
> >    unless the property is preserved.
> >
> > There are also some drawbacks to keeping source locations:
> >
> >  * It costs space. Happily, this cost is lower than I thought it would
> >    be: ".zo" files are only about 10% bigger on average (thanks to a
> >    big pile of marshaling tricks that we've built up over the years).
> >    The effect on run-time memory seems to be even smaller (thanks to a
> >    big pile of on-demand-loading machinery).
> >
> >  * Source locations associated with a macro's implementation can be a
> >    distraction for users other than the macro's implementor.
> >    Furthermore, source locations can bleed through in cases other than
> >    syntax errors.
> >
> >    For example, the change makes the `racket` REPL behave like this:
> >
> >       > (lambda (x) x)
> >       #<procedure>
> >       > (eval '(lambda (x) x))
> >       #<procedure:...t/private/kw.rkt:394:14>
> >
> >    In the first case, the source location for the `lambda` expression
> >    doesn't refer to a file, so it isn't included in the output. In the
> >    second case, the S-expression for the `lambda` expression is
> >    converted to a syntax object that has *no* source location, and so a
> >    source location is eventualy inherited from the implementation of
> >    the `lambda` macro.
> >
> > On the whole, I think saving source locations is going to be better
> > than not, but we'll have to try it out.
> >
> > I didn't yet attempt to change `quote-syntax/keep-srcloc` or other
> > things that expand in special ways to preserve source locations. If the
> > experiment works out, that's a next step.
> >
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Racket Developers" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to [email protected].
> > To post to this group, send email to [email protected].
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msgid/racket-dev/20150903003024.514F86501CE%40mail-svr1.cs.utah.edu.
> > For more options, visit https://groups.google.com/d/optout.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Racket Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/racket-dev/CAL3TdONb7J7P50r1EQwOKnzXdKhkoWpLfC4r%3DqtMW15DBQ%3D46w%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/m2613rijal.wl-stamourv%40eecs.northwestern.edu.
For more options, visit https://groups.google.com/d/optout.

Reply via email to