Re: summary: lilypond, lambda, and local-eval

2012-01-09 Thread David Kastrup
Mark H Weaver m...@netris.org writes: Ideally I'd like to allow the user to specify a precise list of variables to capture, and perhaps the other two variants should be implemented in terms of this one. If you have to specify a precise _list_ of variables, the-environment is pretty pointless

Re: summary: lilypond, lambda, and local-eval

2011-12-18 Thread Andy Wingo
On Sun 18 Dec 2011 08:11, Mark H Weaver m...@netris.org writes: So, it turns out that the best place to transform (the-environment) into standard scheme code is in the macro expander itself. Are you certain that it is desirable to transform it into standard Scheme code? The statement that

Re: summary: lilypond, lambda, and local-eval

2011-12-18 Thread Noah Lavine
Hello, Indeed, only the macro expander has enough information to generate an optimal list of reachable lexicals, i.e. lexical variables that are accessible using normal symbols (as opposed to syntax objects) [more on this below]. Are you certain that you want to restrict the set of

Re: summary: lilypond, lambda, and local-eval

2011-12-18 Thread David Kastrup
Let me first state that this thread is arguing at a depth where the only contributions that remain for me to make are syllogisms without an actual knowledge of what I am talking about. In order not to appear ungrateful, I will do that, but there will be little point in expecting me to be of

Re: summary: lilypond, lambda, and local-eval

2011-12-18 Thread Noah Lavine
Hello, If I understand correctly, Mark wants to restrict the set of variables you can access to those you could access through normal Scheme code. This is an issue because psyntax happens to provide a way to access more variables than standard Scheme. If this is the case, I think we should

Re: summary: lilypond, lambda, and local-eval

2011-12-16 Thread Mark H Weaver
I wrote: The compiler-environment would include a list of lexical variable names (var ...), which must exactly correspond to the closure slots of the `case-lambda', in order to implement `local-eval'. We _might_ also need to include some information about how those variables are stored,

Re: summary: lilypond, lambda, and local-eval

2011-12-16 Thread David Kastrup
Andy Wingo wi...@pobox.com writes: What are the meanings of these expressions: I found it amusing to see what my definitions using with-current-continuation will produce here. ;; Toplevel (local-eval '(define foo 42) (the-environment)) guile (my-eval '(define foo 42) (my-env)) guile foo

Re: summary: lilypond, lambda, and local-eval

2011-12-16 Thread Hans Aberg
On 16 Dec 2011, at 11:33, Mark H Weaver wrote: Here's what I currently see: scheme@(guile-user) (local-eval #'t (primitive-eval '(let ((t 42)) (or #f (the-environment) ERROR: In procedure memoize-variable-access!: ERROR: Unbound variable: t This is the correct behavior, no? This

Re: summary: lilypond, lambda, and local-eval

2011-12-16 Thread Hans Aberg
On 16 Dec 2011, at 13:43, David Kastrup wrote: Here's what I currently see: scheme@(guile-user) (local-eval #'t (primitive-eval '(let ((t 42)) (or #f (the-environment) ERROR: In procedure memoize-variable-access!: ERROR: Unbound variable: t This is the correct behavior, no? This

summary: lilypond, lambda, and local-eval

2011-12-15 Thread Andy Wingo
Hi, The delayed evaluation thread is a bit long and confusing, so I would like to try to summarize it. Lilypond has a way to embed Lilypond code in Scheme, and Scheme code in Lilypond code. The former uses a reader macro, #{#}. The latter uses specially-marked variables and expressions,

Re: summary: lilypond, lambda, and local-eval

2011-12-15 Thread Hans Aberg
On 15 Dec 2011, at 11:21, Andy Wingo wrote: The delayed evaluation thread is a bit long and confusing, so I would like to try to summarize it. Lilypond has a way to embed Lilypond code in Scheme, and Scheme code in Lilypond code. The former uses a reader macro, #{#}. The latter uses

Re: summary: lilypond, lambda, and local-eval

2011-12-15 Thread Hans Aberg
On 15 Dec 2011, at 18:24, David Kastrup wrote: The delayed evaluation thread is a bit long and confusing, so I would like to try to summarize it. Lilypond has a way to embed Lilypond code in Scheme, and Scheme code in Lilypond code. The former uses a reader macro, #{#}. The latter uses

Re: summary: lilypond, lambda, and local-eval

2011-12-15 Thread Mark H Weaver
Hello all, Although it has not yet been decided whether `local-eval' will be accepted into Guile 2, I've decided to proceed with a proper implementation that is fully integrated into the compiler. I hope to demonstrate that this feature can be implemented easily without creating any significant