Re: [racket-users] stops in Macros that Work Together

2015-07-07 Thread Anthony Carrico
Thanks for clearing that up Ryan  Matthew :).

-- 
Anthony Carrico


-- 
You received this message because you are subscribed to the Google Groups 
Racket Users group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


signature.asc
Description: OpenPGP digital signature


[racket-users] stops in Macros that Work Together

2015-07-06 Thread Anthony Carrico
I've been working through Macros that Work Together (on my way to
working through Sets-of-Scopes). I've come across something that is
slightly unclear to me in the section on local-expand:

  E ::= a mapping from name to transform

I don't believe that E is a stack (right?). If it isn't, then in
jfp12-draft2-fcdf.pdf page 26:

  nostops[E]={var-transform | E(var) = transform and transform != Stop}

  Estops = nostops[E]+{resolve[idstop]-Stop} ...

This will clear out the stops of the outer macro and then install the
stops of the inner macro. My concern is that nostops does nothing to
reinstall the original transformers of the cleared stops. Shouldn't it?

-- 
Anthony Carrico

-- 
You received this message because you are subscribed to the Google Groups 
Racket Users group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


signature.asc
Description: OpenPGP digital signature


Re: [racket-users] stops in Macros that Work Together

2015-07-06 Thread Ryan Culpepper

On 07/06/2015 10:04 PM, Anthony Carrico wrote:

I've been working through Macros that Work Together (on my way to
working through Sets-of-Scopes). I've come across something that is
slightly unclear to me in the section on local-expand:

   E ::= a mapping from name to transform

I don't believe that E is a stack (right?). If it isn't, then in
jfp12-draft2-fcdf.pdf page 26:

   nostops[E]={var-transform | E(var) = transform and transform != Stop}

   Estops = nostops[E]+{resolve[idstop]-Stop} ...

This will clear out the stops of the outer macro and then install the
stops of the inner macro. My concern is that nostops does nothing to
reinstall the original transformers of the cleared stops. Shouldn't it?


If I remember correctly, nostops does in fact depend on the definition 
of environments as alists, so when the Stop binding is removed, the 
previous binding becomes visible again. You can get the actual redex 
models behind the paper here:


  http://www.cs.utah.edu/plt/expmodel-6/

Ryan

--
You received this message because you are subscribed to the Google Groups Racket 
Users group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] stops in Macros that Work Together

2015-07-06 Thread Matthew Flatt
At Mon, 06 Jul 2015 23:24:20 -0400, Ryan Culpepper wrote:
 On 07/06/2015 10:04 PM, Anthony Carrico wrote:
  I've been working through Macros that Work Together (on my way to
  working through Sets-of-Scopes). I've come across something that is
  slightly unclear to me in the section on local-expand:
 
 E ::= a mapping from name to transform
 
  I don't believe that E is a stack (right?). If it isn't, then in
  jfp12-draft2-fcdf.pdf page 26:
 
 nostops[E]={var-transform | E(var) = transform and transform != Stop}
 
 Estops = nostops[E]+{resolve[idstop]-Stop} ...
 
  This will clear out the stops of the outer macro and then install the
  stops of the inner macro. My concern is that nostops does nothing to
  reinstall the original transformers of the cleared stops. Shouldn't it?
 
 If I remember correctly, nostops does in fact depend on the definition 
 of environments as alists, so when the Stop binding is removed, the 
 previous binding becomes visible again. You can get the actual redex 
 models behind the paper here:
 
http://www.cs.utah.edu/plt/expmodel-6/

(And that demonstrates a hazard of providing a custom typesetting rule
with Redex!)

In case it's useful, the set-of-scopes model avoids this mistake by
having `Stop` record the previous transformer value. Then, the `unstop`
metafunction (instead of `nostops`) can restore it:

http://www.cs.utah.edu/~mflatt/scope-sets-5/model.html#%28part._.Local_.Expansion%29

-- 
You received this message because you are subscribed to the Google Groups 
Racket Users group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.