[EMAIL PROTECTED] (Ludovic Courtès) writes:

> Well, the manual doesn't mention this restriction and, rather than
> fixing the manual, I wanted to understand the rationale behind this
> restriction.

That's fair enough.  I guess the rationale is that the unit of
evaluation (as presented in backtraces for example) is a list, so it
is useful for source properties to be stored on lists when those are
read.

> I see no reason not to allow source properties to be attached to
> arbitrary non-immediates.  The fact that this "won't work" for symbols
> is not, IMO, a sufficiently good reason to the current restriction.  For
> instance, one might want to have the following definition of `eval':
>
>   (let ((real-eval eval))
>     (set! eval
>           (lambda (expr env)
>             (let ((props (source-properties expr))
>                   (result (real-eval expr env)))
>               (if (or (vector? result) (record? result) (pair? result))
>                   (set-source-properties! result props))
>               result))))
>
> This allows to keep source information further at run-time.

Yes, but why is that useful?

(So far, I think I'd vote for fixing the manual rather than extending
source properties ...)

       Neil



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel

Reply via email to