<snapdata remixID="14268799"><project name="custom lisp thing" app="Snap! 10.5.1, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAq1JREFUeF7t1bGJKlEAhtG7YGBgQYYmBgZWYwGWIdiCJZhag1iKgeDissHyFh4jG3zJmfje+eHjMPPxfD6fw6NAVOADwKi82a8CAIKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLAJjmNw4gA2kBANP8xgFkIC0AYJrfOIAMpAUATPMbB5CBtACAaX7jADKQFgAwzW8cQAbSAgCm+Y0DyEBaAMA0v3EAGUgLADgh/+l0Gtfrdez3+wmnHXmnAIATa63X67FYLL5O3+/3sVwugZzY7n/HAHwj4na7HbPZ7NeN2+02DofDWK1Wb7zN0VcBAN9wsNlsxnw+/3XjcrmM128awDdifh8FcGKzn/gej8fY7XbATWznF/zHUK+v2/F4HOfz+Y9vcv3fAr6ATKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWuATiRQCt7PgXvEAAAAASUVORK5CYII=</thumbnail><scenes select="1"><scene name="custom lisp thing"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="parse code %&apos;code&apos; to blocks" type="reporter" category="operators"><comment x="0" y="0" w="104" collapsed="false">turn LISP syntax text code into blocks&#xD;Lisp name: parseCode</comment><header></header><code></code><translations>de:verwandle Code _ in Blöcke&#xD;ca:blocs del codi textual _&#xD;</translations><inputs><input type="%code" initial="1">(+ 3 4)</input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>item</l><block s="reportListAttribute"><l><option>flatten</option></l><block var="__customLispNames__"/></block><script><block s="doIf"><block s="reportIsA"><block var="item"/><l><option>text</option></l></block><script><block s="doSetVar"><l>code</l><block s="reportCombine"><block s="reportTextSplit"><block var="code"/><block var="item"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><block s="reportJoinWords"><list><l>"</l><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportListAttribute"><l></l><block s="reportTextSplit"><block s="reportListItem"><block var="item"/><block var="__customLispNames__"/></block><l><option>blocks</option></l></block></block></autolambda><list></list></block><list><l>text</l></list></block><l>"</l></block></block><l>"</l></list></block><l></l></list></block></autolambda><list></list></block></block></block></script><list></list></block></script></block></script></block><block s="doReport"><block s="reportJoinWords"><block s="reportTextSplit"><block var="code"/><l><option>blocks</option></l></block></block></block></script></block-definition><block-definition s="encode blocks %&apos;script&apos; to text %&apos;lines&apos; pretty" type="reporter" category="operators"><comment w="106" collapsed="false">turn blocks into LISP syntax text code.&#xD;Lisp name: encodeBlocks</comment><header></header><code></code><translations>de:verwandle Blöcke _ in Code _ formatiert&#xD;ca:codi textual dels blocs _ formatats _&#xD;</translations><inputs><input type="%repRing" initial="1"></input><input type="%b" initial="1">true</input></inputs><script><block s="doDeclareVariables"><list><l>code</l></list></block><block s="doSetVar"><l>code</l><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportListAttribute"><l></l><block s="reportTextSplit"><block var="script"/><l><option>blocks</option></l></block></block></autolambda><list></list></block><list><block s="reportIfElse"><block var="lines"/><l>lines</l><l>text</l></block></list></block></block><block s="doWarp"><script><block s="doForEach"><l>item</l><block s="reportTextSplit"><block var="code"/><l>"</l></block><script><block s="doIf"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportJoinWords"><block s="reportTextSplit"><block s="reportJoinWords"><list><l>(</l><block var="item"/><l>)</l></list></block><l><option>blocks</option></l></block></block><block s="reifyReporter"><autolambda><block var=" "/></autolambda><list></list></block></list></block></block><block s="reportListContainsItem"><block s="reportListAttribute"><l><option>flatten</option></l><block var="__customLispNames__"/></block><block s="reportJoinWords"><block s="reportTextSplit"><block s="reportJoinWords"><list><l>("</l><block var="item"/><l>")</l></list></block><l><option>blocks</option></l></block></block></block></list></block><script><block s="doSetVar"><l>code</l><block s="reportCombine"><block s="reportTextSplit"><block var="code"/><block s="reportJoinWords"><list><l>"</l><block var="item"/><l>"</l></list></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><block s="reportListItem"><block s="reportDifference"><block s="reportListIndex"><block s="reportJoinWords"><block s="reportTextSplit"><block s="reportJoinWords"><list><l>("</l><block var="item"/><l>")</l></list></block><l><option>blocks</option></l></block></block><block s="reportListAttribute"><l><option>flatten</option></l><block var="__customLispNames__"/></block></block><l>1</l></block><block s="reportListAttribute"><l><option>flatten</option></l><block var="__customLispNames__"/></block></block><l></l></list></block></autolambda><list></list></block></block></block></script><list></list></block></script></block></script></block><block s="doReport"><block var="code"/></block></script></block-definition><block-definition s="this %&apos;a&apos; is a %&apos;n&apos; block with inputs" type="command" category="variables"><comment x="0" y="0" w="90" collapsed="false">Lisp name: blockInputs</comment><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%s" initial="1"></input></inputs></block-definition><block-definition s="init custom lisp names" type="command" category="operators"><comment x="0" y="0" w="90" collapsed="false">Lisp name: initCustomLispNames</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doApplyExtension"><l>var_declare(scope, name)</l><list><l>global</l><l>__customLispNames__</l></list></block><block s="doApplyExtension"><l>ide_hide(block)</l><list><block s="reifyReporter"><autolambda><block var="__customLispNames__"/></autolambda><list></list></block></list></block><block s="doSetVar"><l>__customLispNames__</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doForEach"><l>item</l><block s="reportGet"><l><option>blocks</option></l></block><script><block s="doIf"><block s="reportBlockAttribute"><l><option>custom?</option></l><block var="item"/></block><script><block s="doIf"><block s="reportBlockAttribute"><l><option>comment</option></l><block var="item"/></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>comment</option></l><block var="item"/></block><l><option>line</option></l></block></block><l>Lisp name: </l></block></block><l></l></list></block><script><block s="doAddToList"><block s="reportNewList"><list><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block s="reportBlockAttribute"><l><option>comment</option></l><block var="item"/></block><l><option>line</option></l></block></block><l>Lisp name: </l></block></block><block var="item"/></list></block><block var="__customLispNames__"/></block></script><list></list></block></script><list></list></block></script><list></list></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="replace all instances of %&apos;1&apos; in %&apos;2&apos; to %&apos;3&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" initial="1"></input><input type="%s" initial="1"></input><input type="%s" initial="1"></input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportTextSplit"><block var="2"/><block var="1"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><block var="3"/><l></l></list></block></autolambda><list></list></block></block></block></script></block-definition></blocks><primitives></primitives><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="360"><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="361"></list></costumes><sounds><list struct="atomic" id="362"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="10" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="367"><costumes><list struct="atomic" id="368"></list></costumes><sounds><list struct="atomic" id="369"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="20"><custom-block s="parse code %code to blocks"><l>(&#xD;    (move 10) &#xD;    (blockInputs nil &#xD;        (parseCode "(+ 3 4)")&#xD;    ) &#xD;    (initCustomLispNames)&#xD;)</l></custom-block></script><script x="20" y="125.00000000000006"><custom-block s="encode blocks %repRing to text %b pretty"><block s="reifyReporter"><script><block s="forward"><l>10</l></block><custom-block s="this %s is a %s block with inputs"><l></l><custom-block s="parse code %code to blocks"><l>(+ 3 4)</l></custom-block></custom-block><custom-block s="init custom lisp names"></custom-block></script><list></list></block><l><bool>true</bool></l><comment w="90" collapsed="false">Laggy</comment></custom-block></script><script x="20" y="236.6666666666668"><custom-block s="init custom lisp names"><comment w="90" collapsed="false">You need to run this first for all custom blocks with custom lisp names to be added to the database.</comment></custom-block></script></scripts></sprite></sprites></stage><variables><variable name="__customLispNames__" hidden="true"><list id="393"><item><list id="394"><item><l>parseCode</l></item><item><context id="395"><inputs></inputs><variables></variables><custom-block s="parse code %code to blocks"><l></l></custom-block><receiver></receiver><origin></origin></context></item></list></item><item><list id="400"><item><l>encodeBlocks</l></item><item><context id="401"><inputs></inputs><variables></variables><custom-block s="encode blocks %repRing to text %b pretty"><block s="reifyReporter"><script></script><list></list></block><l/></custom-block><receiver></receiver><origin></origin></context></item></list></item><item><list id="411"><item><l>blockInputs</l></item><item><context id="412"><inputs></inputs><variables></variables><script><custom-block s="this %s is a %s block with inputs"><l></l><l></l></custom-block></script><receiver></receiver><origin></origin></context></item></list></item><item><list id="418"><item><l>initCustomLispNames</l></item><item><context id="419"><inputs></inputs><variables></variables><script><custom-block s="init custom lisp names"></custom-block></script><receiver></receiver><origin></origin></context></item></list></item></list></variable></variables></scene></scenes></project><media name="custom lisp thing" app="Snap! 10.5.1, https://snap.berkeley.edu" version="2"></media></snapdata>