<snapdata remixID="13362149"><project name="List Iterator" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAzlJREFUeF7t10FKY2EQhdFfUXDiFtyPGxB0oAbcidvJJrIeceIkBAevwVkPlOZy6QI5GaeqyHkfPHK2bdu2fAgMCZwJcEje2S8BAQphVECAo/yOC1ADowICHOV3XIAaGBUQ4Ci/4wLUwKiAAEf5HRegBkYFBDjK77gANTAqIMBRfscFqIFRAQGO8jsuQA2MCghwlN9xAWpgVECAo/yOC1ADowICHOV3XIAaGBUQ4Ci/4wLUwKiAAEf5HRegBkYFBDjK77gANTAqIMBRfscFqIFRAQGO8jsuQA2MCghwlN9xAWpgVECAo/yOC1ADowICHOV3XIAaGBUQ4Ci/4wLUwKiAAEf5HRegBkYFBDjK77gANTAqIMBRfscFqIFRAQGO8jsuQA2MCghwlN9xAWpgVECAo/yOC1ADowICHOV3XIAaGBUQ4Ci/4wLUwKiAAL/h3+/36/39fd3e3q6bm5vRh/Sbjwvwm6f78fGxXl5e1ufn53p7e1v39/fr4uJiPT09raurq9/cxH/9bQL8gftwOKzX19d1fX3917eOx+N6fn5e27Z9hemTCwgwCPB0Oq3Hx8d1fn6+7u7ucn2TS4D/+Ap+eHj4egXvdrt1eXkpnZKAAP0JKaWUrRFg5maqJCDAEqQ1mYAAMzdTJQEBliCtyQQEmLmZKgkIsARpTSYgwMzNVElAgCVIazIBAWZupkoCAixBWpMJCDBzM1USEGAJ0ppMQICZm6mSgABLkNZkAgLM3EyVBARYgrQmExBg5maqJCDAEqQ1mYAAMzdTJQEBliCtyQQEmLmZKgkIsARpTSYgwMzNVElAgCVIazIBAWZupkoCAixBWpMJCDBzM1USEGAJ0ppMQICZm6mSgABLkNZkAgLM3EyVBARYgrQmExBg5maqJCDAEqQ1mYAAMzdTJQEBliCtyQQEmLmZKgkIsARpTSYgwMzNVElAgCVIazIBAWZupkoCAixBWpMJCDBzM1USEGAJ0ppMQICZm6mSgABLkNZkAgLM3EyVBARYgrQmExBg5maqJCDAEqQ1mYAAMzdTJQEBliCtyQQEmLmZKgkIsARpTSYgwMzNVElAgCVIazIBAWZupkoCfwBN/Be3THjJawAAAABJRU5ErkJggg==</thumbnail><scenes select="1"><scene name="List Iterator"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="%&apos;list&apos; iterator" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="list"/><l><option>list</option></l></block></block><script><custom-block s="error %txt"><l>InputMismatchException: the argument is not a list</l></custom-block></script><list></list></block><block s="doDeclareVariables"><list><l>i</l><l>x</l></list></block><block s="doSetVar"><l>i</l><l>0</l></block><block s="doSetVar"><l>x</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>hasNext</l><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block></list></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><l>next</l><block s="reifyScript"><script><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="i"/><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block></list></block><script><block s="doChangeVar"><l>i</l><l>1</l></block><block s="doSetVar"><l>x</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doReport"><block s="reportListItem"><block var="i"/><block var="list"/></block></block></script><script><custom-block s="error %txt"><l>NoSuchElementException: the iterator reached the end of the list</l></custom-block></script></block></script><list></list></block></list></block><block s="reportNewList"><list><l>remove</l><block s="reifyScript"><script><block s="doIfElse"><block var="x"/><script><block s="doDeleteFromList"><block var="i"/><block var="list"/></block><block s="doChangeVar"><l>i</l><l>-1</l></block><block s="doSetVar"><l>x</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><custom-block s="error %txt"><l>IllegalStateException: there is no item to delete (call next to get it)</l></custom-block></script></block></script><list></list></block></list></block><block s="reportNewList"><list><l>constructor</l><block s="reifyReporter"><autolambda><custom-block s="%l iterator"><block var="list"/></custom-block></autolambda><list></list></block></list></block></list></block></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="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></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="%&apos;list&apos; is an iterator?" type="predicate" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportVariadicAnd"><list><block s="reportIsA"><block var="list"/><l><option>list</option></l></block><block s="reportIsA"><block s="reportListItem"><l>constructor</l><block var="list"/></block><l><option>reporter</option></l></block><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reportListItem"><l>constructor</l><block var="list"/></block><l><option>blocks</option></l></block></block><block s="reifyReporter"><autolambda><custom-block s="%l iterator"><l/></custom-block></autolambda><list></list></block></list></block></list></block></block></script></block-definition><block-definition s="iterate %&apos;list&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doIfElse"><custom-block s="%l is an iterator?"><block var="list"/></custom-block><script><block s="doUntil"><block s="reportNot"><block s="evaluate"><block s="reportListItem"><l>hasNext</l><block var="list"/></block><list></list></block></block><script><block s="doRun"><block var="action"/><list><block s="evaluate"><block s="reportListItem"><l>next</l><block var="list"/></block><list></list></block></list></block></script></block></script><script><custom-block s="iterate %l %cs"><custom-block s="%l iterator"><block var="list"/></custom-block><script><block s="doRun"><block var="action"/><list><l></l></list></block></script></custom-block></script></block></script></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="277"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="278"></list></costumes><sounds><list struct="atomic" id="279"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="284"><costumes><list struct="atomic" id="285"></list></costumes><sounds><list struct="atomic" id="286"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="10"><block s="doDeclareVariables"><list><l>my list</l></list></block><block s="doSetVar"><l>my list</l><block s="reportNumbers"><l>1</l><l>10</l></block></block><custom-block s="iterate %l %cs"><block var="my list"/><script><block s="doSayFor"><l></l><l>1</l></block></script></custom-block><custom-block s="iterate %l %cs"><custom-block s="%l iterator"><block var="my list"/></custom-block><script><block s="doSayFor"><l></l><l>1</l></block></script></custom-block></script><script x="20" y="186.4999999999999"><block s="doDeclareVariables"><list><l>init</l><l>iter</l><l>copy</l></list></block><block s="doSetVar"><l>init</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRandom"><l>-100</l><l>100</l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><l>100</l></block></block></block><block s="doSetVar"><l>iter</l><custom-block s="%l iterator"><block var="init"/></custom-block></block><block s="doSetVar"><l>copy</l><block s="reportMonadic"><l><option>id</option></l><block var="init"/></block></block><custom-block s="iterate %l %cs"><block var="iter"/><script><block s="doIf"><block s="reportVariadicLessThan"><list><l></l><l>0</l></list></block><script><block s="doRun"><block s="reportListItem"><l>remove</l><block var="iter"/></block><list></list></block></script><list></list></block></script></custom-block><block s="bubble"><block s="reportNewList"><list><block s="reportCONS"><l>original list (may contain negatives)</l><block var="copy"/></block><block s="reportCONS"><l>original list except all negatives are removed</l><block var="init"/></block></list></block></block></script></scripts></sprite></sprites></stage><variables></variables></scene></scenes></project><media name="List Iterator" app="Snap! 9.0, https://snap.berkeley.edu" version="2"></media></snapdata>