15:53:51drmeisterI've added a 'datum' type to the literal compiler. It stores the index for the datum in the literal table or if it's a transient value it stores a gensym to uniquely identify the transient. It's on the way to creating the bytecode interpreter. I'm stealing ideas from Cleavir.
15:55:42drmeisterRight now the literal tables are full of transient values that are only there to create 'toplevel' values that the code references. I want to get the transient values out of there and only store 'toplevel' values that the code references. It will make the literal tables much more compact.
15:58:24Bikebut you might actually need them in the table sometimes.
15:58:54Bikee.g. if you have a literal (nil #1=(#1# . #1#))
16:02:10drmeisteri'm introducing the concept of a 'toplevel' value - one that is referenced by the code and a 'transient' value - one that is created by the literal interpreter to create a 'toplevel' value. The code only refers directly to 'toplevel' values.
16:03:14drmeisterIn your example above NIL and (nil #1=(#1# . #1#)) are toplevel values. #1# is transient.