Changes between Initial Version and Version 1 of Ticket #1274, comment 3


Ignore:
Timestamp:
04/03/16 11:57:38 (5 years ago)
Author:
evhan
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1274, comment 3

    initial v1  
    1 Transcribed from IRC: basically, {{{##sys#canonicalize-body}}} reorders
    2 internal definitions so that multi-valued assignments always follow
    3 normal ones. The result is always a bunch of let bindings to introduce
    4 the vars followed by a bunch of {{{##core#set!}}} nodes to assign them,
    5 but the normal and multi-valued var/val pairs are accumulated in
    6 separate lists so the ordering gets lost. Then, the templating just
    7 blindly puts the multi-valued {{{##core#sets!}}} after the others.
    8 Currently, the "dimensions" of the lists are different, so to speak --
    9 in the code, vars/vals gets a list of variables/expressions, whereas
    10 mvars/mvals gets a list of lists of variables/expressions -- and
    11 mvars/mvals has to be processed a bit more to produce a c-w-v.
     1Transcribed from IRC: basically, {{{##sys#canonicalize-body}}} reorders internal definitions so that multi-valued assignments always follow normal ones. The result is always a bunch of let bindings to introduce the vars followed by a bunch of {{{##core#set!}}} nodes to assign them, but the normal and multi-valued var/val pairs are accumulated in separate lists so the ordering gets lost. Then, the templating just blindly puts the multi-valued {{{##core#sets!}}} after the others. Currently, the "dimensions" of the lists are different, so to speak -- in the code, vars/vals gets a list of variables/expressions, whereas mvars/mvals gets a list of lists of variables/expressions -- and mvars/mvals has to be processed a bit more to produce a c-w-v.