<snapdata remixID="13415620"><project name="Multi-dimensional Table as an object SICP section 3.3.3 " app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes>The block NEW TABLE (see inside) creates a table of any order, plus operations to store and show stored data.&#xD;&#xD;It was inspired by section 3.3.3 of SICP (Structure and Interpretations of Computer Programs).</notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAoKADAAQAAAABAAAAeAAAAAAeaS0RAAADXUlEQVR4Ae3XMS7lYRTG4c9EoiBqLSLRoJHoRWVVdqGwBfuwF4lGqTFGoTPJO3nlkHluJXJyzj+PH/faeH17LS8CQwK/hu46S+BdQIBCGBUQ4Ci/4wLUwKiAAEf5HRegBkYFBDjK77gANTAqIMBRfscFqIFRAQGO8jsuQA2MCghwlN9xAWpgVECAo/yOC1ADowICHOV3XIAaGBUQ4Ci/4wLUwKiAAEf5HRegBkYFBDjK77gANTAqIMBRfscFqIFRAQGO8jsuQA2MCghwlN9xAWpgVECAo/yOC1ADowICHOV3XIAaGBUQ4Ci/4wLUwKiAAEf5HRegBkYFBDjK77gANTAqIMBRfscFqIFRAQGO8jsuQA2MCghwlN9xAWpgVECAo/yOC1ADowICHOV3XIAaGBUQ4Ci/4wLUwKiAAEf5HRegBkYFBDjK77gANTAqsDl6/Rsfv76+XhcXF+vw8HBdXV2tvb29b/y0P/fRNl7fXj/38b/uyR8eHtbNzc3a2tpaT09P6+DgYJ2cnKzj4+N1eXm5dnZ2vu74f7RZgH/5Yd/f36/b29u1u7v7MfXy8rKen5/X2dnZOjo6Wufn5+9/KTc3vZl8IAVf+AwYYBntC/i1/cT0z1vw3d3d2t7eXo+Pj2t/f3+dnp56C/7E61+/7S34Ezn/hHwCU/62AMug1mUCPgNmXqbLAgIsg1qXCQgw8zJdFhBgGdS6TECAmZfpsoAAy6DWZQICzLxMlwUEWAa1LhMQYOZluiwgwDKodZmAADMv02UBAZZBrcsEBJh5mS4LCLAMal0mIMDMy3RZQIBlUOsyAQFmXqbLAgIsg1qXCQgw8zJdFhBgGdS6TECAmZfpsoAAy6DWZQICzLxMlwUEWAa1LhMQYOZluiwgwDKodZmAADMv02UBAZZBrcsEBJh5mS4LCLAMal0mIMDMy3RZQIBlUOsyAQFmXqbLAgIsg1qXCQgw8zJdFhBgGdS6TECAmZfpsoAAy6DWZQICzLxMlwUEWAa1LhMQYOZluiwgwDKodZmAADMv02UBAZZBrcsEBJh5mS4LCLAMal0mIMDMy3RZQIBlUOsyAQFmXqbLAgIsg1qXCQgw8zJdFhBgGdS6TECAmZfpsoAAy6DWZQICzLxMlwUEWAa1LhP4DaPKOTB7p0ocAAAAAElFTkSuQmCC</thumbnail><scenes select="1"><scene name="Multi-dimensional Table as an object SICP section 3.3.3 "><notes>The block NEW TABLE (see inside) creates a table of any order, plus operations to store and show stored data.&#xD;&#xD;It was inspired by section 3.3.3 of SICP (Structure and Interpretations of Computer Programs).</notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="new table" type="reporter" category="variables"><comment x="0" y="0" w="286" collapsed="false">Reports a newly created table of any order.&#xD;&#xD;The table may subsequently be called with the following&#xD;INPUTS:&#xD;1. request (options: see below)&#xD;2. keys - a list of 1 or more text keys (no numbers allowed!)&#xD;3. data - the item or data structure to be stored&#xD;WHAT IT DOES&#xD;If request = …&#xD;* ”store”: &#xD;  2. keys&#xD;  3. data: will replace any data stored earlier with the same keys. &#xD;TRUE will be reported.&#xD;* ”show”:&#xD;  2. keys&#xD;  If data was stored with the same keys, it will be reported.&#xD;  Otherwise, nothing is reported.&#xD;* ”remove”:&#xD;  2. keys&#xD;  If data was stored with the same keys, it will be removed, and&#xD;  TRUE will be reported; otherwise: FALSE.&#xD;* ”show all”:&#xD;  The full table will be reported.&#xD;* ”reset”:&#xD;  The table will be restored to its initial (empty) state.&#xD;* anything else:&#xD;  An error will be raised.</comment><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="let %upvar be %s"><l>table</l><block s="reportNewList"><list></list></block></custom-block><custom-block s="let %upvar be %s"><l>store</l><block s="reifyScript"><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="sub-keys"/></block></block><script><block s="doReplaceInList"><block s="reportListItem"><l>1</l><block var="sub-keys"/></block><block var="sub-table"/><block var="value"/></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="sub-keys"/></block><block var="sub-table"/></block><l></l></list></block><script><block s="doAddToList"><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="sub-keys"/></block><block s="reportNewList"><list></list></block></list></block><block var="sub-table"/></block></script><list></list></block><block s="doReport"><block s="evaluate"><block var="store"/><list><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="sub-keys"/></block><block var="sub-table"/></block><block s="reportCDR"><block var="sub-keys"/></block><block var="value"/></list></block></block></script><list><l>sub-table</l><l>sub-keys</l><l>value</l></list></block></custom-block><custom-block s="let %upvar be %s"><l>show</l><block s="reifyScript"><script><block s="doIf"><block s="reportListIsEmpty"><block var="sub-keys"/></block><script><block s="doReport"><block var="sub-table"/></block></script><list></list></block><block s="doReport"><block s="evaluate"><block var="show"/><list><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="sub-keys"/></block><block var="sub-table"/></block><l>error</l><block var="error"/></custom-block><block s="reportCDR"><block var="sub-keys"/></block></list></block></block></script><list><l>sub-table</l><l>sub-keys</l></list></block></custom-block><custom-block s="let %upvar be %s"><l>remove</l><block s="reifyScript"><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="sub-keys"/></block><block var="sub-table"/></block><l></l></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="sub-keys"/></block></block><script><block s="doDeleteFromList"><block s="reportListItem"><l>1</l><block var="sub-keys"/></block><block var="sub-table"/></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block><block s="doReport"><block s="evaluate"><block var="remove"/><list><block s="reportListItem"><block s="reportListItem"><l>1</l><block var="sub-keys"/></block><block var="sub-table"/></block><block s="reportCDR"><block var="sub-keys"/></block></list></block></block></script><list><l>sub-table</l><l>sub-keys</l></list></block></custom-block><custom-block s="let %upvar be %s"><l>show all</l><block s="reifyScript"><script><block s="doReport"><block var="table"/></block></script><list></list></block></custom-block><custom-block s="let %upvar be %s"><l>reset</l><block s="reifyScript"><script><block s="doSetVar"><l>table</l><block s="reportNewList"><list></list></block></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><list></list></block></custom-block><custom-block s="let %upvar be %s"><l>handlers</l><block s="reportNewList"><list><block s="reportNewList"><list><l>store</l><block var="store"/></list></block><block s="reportNewList"><list><l>show</l><block var="show"/></list></block><block s="reportNewList"><list><l>remove</l><block var="remove"/></list></block><block s="reportNewList"><list><l>show all</l><block var="show all"/></list></block><block s="reportNewList"><list><l>reset</l><block var="reset"/></list></block></list></block></custom-block><block s="doReport"><block s="reifyReporter"><script><block s="doReport"><block s="evaluate"><block s="reportListItem"><block var="request"/><block var="handlers"/></block><list><block var="table"/><block s="reportIfElse"><block s="reportIsA"><block var="keys"/><l><option>list</option></l></block><block var="keys"/><block s="reportNewList"><list><block var="keys"/></list></block></block><block var="data"/></list></block></block></script><list><l>request</l><l>keys</l><l>data</l></list></block></block></script><scripts><script x="657.9391276041667" y="1091.4666666666665"><block var="data"/></script></scripts></block-definition><block-definition s="safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;" type="reporter" category="control"><comment x="0" y="0" w="316.6666666666667" collapsed="false">Catch errors in a reporter.&#xD;&#xD;Evaluates its first input.  If that expression successfully reports a value, this block reports that value.  If the expression causes a Snap! error,&#xD;then the final input slot is evaluated with the text of what would have&#xD;been the error message in variable ERROR.  SAFELY TRY then reports the value of that final expression.&#xD;&#xD;Sometimes you&apos;ll want to throw an error in the final expression.  You&#xD;can put an ERROR block inside a CALL block to do that.</comment><header></header><code></code><translations>ca:prova de forma segura reportant _ i si _ reportant _&#xD;</translations><inputs><input type="%anyUE"></input><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>value</l><block s="evaluate"><block var="this"/><list></list></block></block></script><l>err</l><script><block s="doSetVar"><l>error</l><block var="err"/></block><block s="doSetVar"><l>value</l><block s="evaluate"><block var="that"/><list></list></block></block></script></custom-block><block s="doReport"><block var="value"/></block></script></block-definition><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control"><comment x="0" y="0" w="276" collapsed="false">Catch errors.&#xD;&#xD;Runs the first script.  If it succeeds, nothing else happens.&#xD;But if it has an error (something that would otherwise result&#xD;in a red halo around the block), then the second script is run,&#xD;with the text of the error message that would have been shown in the variable ERROR.</comment><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _&#xD;ca:prova de forma segura _ i si _ _&#xD;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block var="action"/><block var="handler"/><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="let %&apos;variable&apos; be %&apos;value&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>variable</l><block var="value"/></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><comment x="0" y="0" w="206.66666666666666" collapsed="false">This block does nothing.&#xD;Use it when you are calling a reporter&#xD;for its side effect and don&apos;t care about&#xD;its return value.</comment><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="347"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KADAAQAAAABAAABaAAAAAAHwbojAAAL30lEQVR4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgMDI3+AAEeFvcCAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="348"></list></costumes><sounds><list struct="atomic" id="349"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="-2.842170943040401e-14" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="354"><costumes><list struct="atomic" id="355"></list></costumes><sounds><list struct="atomic" id="356"></list></sounds><blocks></blocks><variables></variables><scripts><script x="18.333333333333336" y="18.333333333333336"><custom-block s="let %upvar be %s"><l>capitals</l><custom-block s="new table"></custom-block><comment w="286" collapsed="false">Reports a newly created table of any order.&#xD;&#xD;The table may subsequently be called with the following&#xD;INPUTS:&#xD;1. request (options: see below)&#xD;2. keys - a list of 1 or more text keys (no numbers allowed!)&#xD;3. data - the item or data structure to be stored&#xD;WHAT IT DOES&#xD;If request = …&#xD;* ”store”: &#xD;  2. keys&#xD;  3. data: will replace any data stored earlier with the same keys. &#xD;TRUE will be reported.&#xD;* ”show”:&#xD;  2. keys&#xD;  If data was stored with the same keys, it will be reported.&#xD;  Otherwise, nothing is reported.&#xD;* ”remove”:&#xD;  2. keys&#xD;  If data was stored with the same keys, it will be removed, and&#xD;  TRUE will be reported; otherwise: FALSE.&#xD;* ”show all”:&#xD;  The full table will be reported.&#xD;* ”reset”:&#xD;  The table will be restored to its initial (empty) state.&#xD;* anything else:&#xD;  An error will be raised.</comment></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="capitals"/><list><l>store</l><l>UK</l><l>London</l></list></block></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="capitals"/><list><l>store</l><l>Germany</l><l>Berlin</l></list></block></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="capitals"/><list><l>reset</l></list></block></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="capitals"/><list><l>store</l><l>France</l><l>Paris</l></list></block></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="capitals"/><list><l>store</l><l>Japan</l><l>Kyoto</l></list></block></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="capitals"/><list><l>store</l><l>Japan</l><l>Tokyo</l></list></block></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="capitals"/><list><l>remove</l><l>France</l></list></block></custom-block><block s="doReport"><block s="evaluate"><block var="capitals"/><list><l>show all</l></list></block></block></script><script x="18.333333333333336" y="372.8333333333334"><custom-block s="let %upvar be %s"><l>adresses</l><custom-block s="new table"></custom-block></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="adresses"/><list><l>store</l><block s="reportNewList"><list><l>USA</l><l>Universities</l><l>UC Berkeley</l></list></block><block s="reportNewList"><list><l>CA 94720</l><l>2284</l></list></block></list></block></custom-block><block s="doReport"><block s="evaluate"><block var="adresses"/><list><l>show</l><block s="reportNewList"><list><l>USA</l><l>Universities</l><l>UC Berkeley</l></list></block></list></block></block></script><script x="20.999999999999993" y="505.16666666666674"><custom-block s="let %upvar be %s"><l>adresses</l><custom-block s="new table"></custom-block></custom-block><custom-block s="ignore %s"><block s="evaluate"><block var="adresses"/><list><l>store</l><block s="reportNewList"><list><l>USA</l><l>Universities</l><l>UC Berkeley</l></list></block><block s="reportNewList"><list><l>CA 94720</l><l>2284</l></list></block></list></block></custom-block><block s="doReport"><block s="evaluate"><block var="adresses"/><list><l>show</l><block s="reportNewList"><list><l>USA</l><l>Universities</l><l>Stanford</l></list></block></list></block></block></script></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="Multi-dimensional Table as an object SICP section 3.3.3 " app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>