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
> specially-marked variables and expressions, specifically, those preceded
> by $ or #.
...
> It took some time for everyone to understand the problem.  In the end,
> there were four workable possibilities.
> 
>  1) Keep using closures.

When doing a parser on top of Guile, I noticed one must first build an 
unevaluated closure, and only thereafter call the evaluator. Scheme has some 
restrictions forcing this, for example, the lambda cannot appear as a free 
symbol, though it is possible in Guile using scm_sym_lambda. 

It might be useful with a variation of scm_eval_string() that only parses and 
builds the closure, but not calls the evaluator.

Hans



Reply via email to