diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2019-04-05 19:40:15 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2019-04-05 19:40:15 -0700 |
commit | 6a9a84f20e925f76f58d935d9844215af4bf0363 (patch) | |
tree | d63553113db4a5c015cddecf25ee85eaf2f83a01 /arith.h | |
parent | 5ca3693a7b5d65fd5aa67c737e7a60b457db2281 (diff) | |
download | txr-6a9a84f20e925f76f58d935d9844215af4bf0363.tar.gz txr-6a9a84f20e925f76f58d935d9844215af4bf0363.tar.bz2 txr-6a9a84f20e925f76f58d935d9844215af4bf0363.zip |
@(output): bugfix: lazy evaluation doesn't work.
In an @(output), if we reference a variable bound to a lazy
list, and the generation of that logic references TXR pattern
variables, things break: the lazy list's code doesn't see
the binding. This is because the lazy list is forced by some
logic that doesn't establish the proper environment for
that evaluation. Inside a @(repeat), the do_output function
measures the lengths of lists emanating from variables,
and that has the effect of forcing the lazy lists.
* match.c (v_output): Just set up the dynamic environment
around the entire function, so that any Lisp evaluation that
occurs is happening as if it were via tleval.
Diffstat (limited to 'arith.h')
0 files changed, 0 insertions, 0 deletions