<snapdata remixID="15103722"><project name="lisp to blocks" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="lisp to blocks"><notes></notes><palette><category name="external blocks" color="21,0,128,1"/></palette><hidden></hidden><headers></headers><code><doForever>0</doForever></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</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="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 x="0" y="0" w="106" collapsed="false">turn blocks into LISP syntax text code.</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="doReport"><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></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;pl:bezpiecznie spróbuj _ a jeśli _ _&#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;pl:błąd _&#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;pl:bezpiecznie spróbuj zgłosić _ a jeśli _ zgłoś _&#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="multiline text input %&apos;multiline&apos;" type="reporter" category="operators"><header></header><code></code><translations>ko:여러 줄의 텍스트가 입력 가능한 입력값 _&#xD;</translations><inputs><input type="%mlt" initial="1"></input></inputs><script><block s="doReport"><block var="multiline"/></block></script></block-definition><block-definition s="write multiline %&apos;multiline text&apos; size %&apos;size&apos; line height %&apos;line height&apos;" type="command" category="pen"><header></header><code></code><translations>ko:여러 줄의 텍스트 _ 를 작성합니다 (크기가 _ 이고 자간 길이가 _ 입니다)&#xD;</translations><inputs><input type="%mlt" initial="1"></input><input type="%n" initial="1"></input><input type="%n" initial="1"></input></inputs><script><block s="doDeclareVariables"><list><l>original x position</l></list></block><block s="doSetVar"><l>original x position</l><block s="xPosition"></block></block><block s="doForEach"><l>line</l><block s="reportTextSplit"><block var="multiline text"/><l><option>line</option></l></block><script><block s="write"><block var="line"/><block var="size"/></block><block s="setXPosition"><block var="original x position"/></block><block s="changeYPosition"><block s="reportMonadic"><l><option>neg</option></l><block s="reportVariadicSum"><list><block var="size"/><block var="line height"/></list></block></block></block></script></block></script></block-definition><block-definition s="identity of text %&apos;text&apos;" type="reporter" category="external blocks"><header></header><code></code><translations>ko:_ 을/를 베껴쓴 값&#xD;</translations><inputs><input type="%txt" initial="1"></input></inputs><script><block s="doReport"><block var="text"/></block></script></block-definition><block-definition s="get line number" type="reporter" category="external blocks" space="true"><header></header><code></code><translations>ko:커서의 줄 번호를 가져온 값&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="reportListAttribute"><l><option>length</option></l><block s="reportTextSplit"><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="문장의 각 글자를 베껴쓴 값"/></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block s="reportDifference"><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><l>1</l></block></block></block></block><l><option>line</option></l></block></block></block></script></block-definition><block-definition s="get letter length" type="reporter" category="external blocks"><header></header><code></code><translations>ko:커서가 위치해 있는 줄까지의 글자 개수 가져오기&#xD;</translations><inputs></inputs><script><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><custom-block s="get line number"></custom-block><l>0</l></list></block><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><l></l><block s="reportTextSplit"><block s="reportJoinWords"><block var="문장의 각 글자를 베껴쓴 값"/></block><l><option>line</option></l></block></block></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><custom-block s="get line number"></custom-block></block></block><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list><l></l><l>1</l><l></l></list></block></autolambda><list></list></block></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="---텍스트에디터---" type="command" category="external blocks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="bubble"><block s="reportNewList"><list><block var="문장 입력값"/><block var="문장의 각 글자를 베껴쓴 값"/><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><block var="텍스트에디터 색상"/><block var="텍스트에디터 크기"/><block var="텍스트에디터x"/><block var="텍스트에디터y"/></list></block></block></script></block-definition><block-definition s="%&apos;내용&apos; 복사하기" type="command" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt" initial="1"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>content</l></list><l>navigator.clipboard.writeText(content);</l></block><list><block var="내용"/></list></block></script></block-definition><block-definition s="pi" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>3.141592653589793</l></block></script></block-definition></blocks><primitives></primitives><stage name="무대" 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="248"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="249"></list></costumes><sounds><list struct="atomic" id="250"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="스프라이트" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="80,80,80,1" pen="tip" id="255"><costumes><list struct="atomic" id="256"></list></costumes><sounds><list struct="atomic" id="257"></list></sounds><blocks></blocks><variables></variables><scripts><script x="191" y="129.6666666666664"><block s="receiveGo"></block><block s="hide"></block><block s="doForever"><script><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>block result</l><custom-block s="parse code %code to blocks"><block var="문장 입력값"/></custom-block></block></script><l>error</l><script><block s="doSetVar"><l>block result</l><block s="reportJoinWords"><list><l>Error: </l><block var="error"/></list></block></block></script></custom-block></script></block></script><script x="200" y="357.16666666666663"><block s="receiveKey"><l><option>any key</option></l><list><l>key</l></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="key"/><l>ctrl c</l></list></block><script><block s="show"></block><custom-block s="%txt 복사하기"><block var="문장 입력값"/></custom-block></script><list></list></block></script></scripts></sprite><sprite name="텍스트에디터" idx="2" x="-200" y="85.00000000000011" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="0.0025500000000167056,0,127.5,1" pen="tip" id="304"><costumes><list struct="atomic" id="305"></list></costumes><sounds><list struct="atomic" id="306"></list></sounds><blocks></blocks><variables></variables><scripts><script x="11" y="10"><block s="receiveGo"></block><block s="doWarp"><script><block s="hide"></block><block s="doSetVar"><l>문장의 각 글자를 베껴쓴 값</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>1</l></block><block s="doSetVar"><l>텍스트에디터x</l><l>-200</l></block><block s="doSetVar"><l>텍스트에디터y</l><l>100</l></block><block s="doSetVar"><l>텍스트에디터 크기</l><block s="reportNewList"><list><l>12</l><l>2</l></list></block></block><block s="doSetVar"><l>텍스트에디터 색상</l><block s="reportNewList"><list><block s="reportNewColor"><list><l>0</l><l>100</l><l>0</l></list></block><block s="reportNewColor"><list><l>66.667</l><l>100</l><l>50</l></list></block></list></block></block></script></block><block s="doForever"><script><block s="doWarp"><script><block s="doSetVar"><l>문장 입력값</l><block s="reportJoinWords"><block var="문장의 각 글자를 베껴쓴 값"/></block></block><block s="clear"></block><block s="setColor"><block s="reportListItem"><l>1</l><block var="텍스트에디터 색상"/></block></block><block s="gotoXY"><block var="텍스트에디터x"/><block var="텍스트에디터y"/></block><custom-block s="write multiline %mlt size %n line height %n"><block var="문장 입력값"/><block s="reportListItem"><l>1</l><block var="텍스트에디터 크기"/></block><block s="reportListItem"><l>2</l><block var="텍스트에디터 크기"/></block></custom-block><block s="setColor"><block s="reportListItem"><l>2</l><block var="텍스트에디터 색상"/></block></block><block s="gotoXY"><block var="텍스트에디터x"/><block s="reportDifference"><block var="텍스트에디터y"/><block s="reportQuotient"><block s="reportListItem"><l>2</l><block var="텍스트에디터 크기"/></block><l>2</l></block></block></block><custom-block s="write multiline %mlt size %n line height %n"><block s="reportJoinWords"><list><block s="reportJoinWords"><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><l>1</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportListItem"><l></l><block var="문장의 각 글자를 베껴쓴 값"/></block><custom-block s="multiline text input %mlt"><l>&#xD;</l></custom-block></list></block><custom-block s="multiline text input %mlt"><l>&#xD;</l></custom-block><l> </l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block s="reportDifference"><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><l>1</l></block></block></block><l></l></block></block><l>_</l></list></block><block s="reportListItem"><l>1</l><block var="텍스트에디터 크기"/></block><block s="reportListItem"><l>2</l><block var="텍스트에디터 크기"/></block></custom-block></script></block></script></block></script><script x="610" y="89.33333333333348"><block s="receiveKey"><l><option>any key</option></l><list><l>누른 키</l></list></block><block s="doIf"><block s="reportKeyPressed"><custom-block s="identity of text %txt"><l>backspace</l></custom-block></block><script><block s="doChangeVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>-1</l></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><l>1</l></list></block><script><block s="doSetVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>1</l></block></script><list></list></block><block s="doDeleteFromList"><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><block var="문장의 각 글자를 베껴쓴 값"/></block></script><list><block s="reportKeyPressed"><custom-block s="identity of text %txt"><l>delete</l></custom-block></block><script><block s="doDeleteFromList"><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><block var="문장의 각 글자를 베껴쓴 값"/></block></script><block s="reportKeyPressed"><l><option>left arrow</option></l></block><script><block s="doChangeVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>-1</l></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><l>1</l></list></block><script><block s="doSetVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>1</l></block></script><list></list></block></script><block s="reportKeyPressed"><l><option>right arrow</option></l></block><script><block s="doChangeVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>1</l></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><block s="reportVariadicSum"><list><block s="reportListAttribute"><l><option>length</option></l><block var="문장의 각 글자를 베껴쓴 값"/></block><l>1</l></list></block></list></block><script><block s="doSetVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><block s="reportVariadicSum"><list><block s="reportListAttribute"><l><option>length</option></l><block var="문장의 각 글자를 베껴쓴 값"/></block><l>1</l></list></block></block></script><list></list></block></script><block s="reportKeyPressed"><l><option>up arrow</option></l></block><script><block s="doIfElse"><block s="reportVariadicEquals"><list><custom-block s="get line number"></custom-block><l>1</l></list></block><script><block s="doSetVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>1</l></block></script><script><block s="doChangeVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><block s="reportMonadic"><l><option>neg</option></l><block s="reportVariadicMax"><list><block s="reportVariadicSum"><list><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><block s="reportDifference"><custom-block s="get line number"></custom-block><l>1</l></block><block s="reportTextSplit"><block var="문장 입력값"/><l><option>line</option></l></block></block></block><l>1</l></list></block><block s="reportDifference"><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><custom-block s="get line number"></custom-block><block s="reportTextSplit"><block var="문장 입력값"/><l><option>line</option></l></block></block></block><block s="reportDifference"><custom-block s="get letter length"></custom-block><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/></block></block></list></block></block></block></script></block></script><block s="reportKeyPressed"><l><option>down arrow</option></l></block><script><block s="doIfElse"><block s="reportVariadicEquals"><list><custom-block s="get line number"></custom-block><block s="reportListAttribute"><l><option>length</option></l><block s="reportTextSplit"><block var="문장 입력값"/><l><option>line</option></l></block></block></list></block><script><block s="doSetVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><block s="reportVariadicSum"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="문장 입력값"/></block><l>1</l></list></block></block></script><script><block s="doChangeVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><block s="reportVariadicSum"><list><block s="reportVariadicMin"><list><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><custom-block s="get line number"></custom-block><block s="reportTextSplit"><block var="문장 입력값"/><l><option>line</option></l></block></block></block><block s="reportVariadicSum"><list><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><block s="reportVariadicSum"><list><custom-block s="get line number"></custom-block><l>1</l></list></block><block s="reportTextSplit"><block var="문장 입력값"/><l><option>line</option></l></block></block></block><block s="reportDifference"><custom-block s="get letter length"></custom-block><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/></block><l>1</l></list></block></list></block><l>1</l></list></block></block></script></block></script><block s="reportNot"><block s="reportVariadicOr"><list><block s="reportKeyPressed"><custom-block s="identity of text %txt"><l>control</l></custom-block></block><block s="reportKeyPressed"><l><option>enter</option></l></block><block s="reportVariadicEquals"><list><block var="누른 키"/><l>Shift</l></list></block></list></block></block><script><block s="doInsertInList"><block var="누른 키"/><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><block var="문장의 각 글자를 베껴쓴 값"/></block><block s="doChangeVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>1</l></block></script></list></block></script><script x="10" y="809.1666666666667"><block s="receiveKey"><l><option>enter</option></l><list></list></block><block s="doInsertInList"><custom-block s="multiline text input %mlt"><l>&#xD;</l></custom-block><block var="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"/><block var="문장의 각 글자를 베껴쓴 값"/></block><block s="doChangeVar"><l>새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치</l><l>1</l></block></script><script x="19" y="956.8333333333335"><block s="receiveConditionEvent"><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="---텍스트에디터---"></custom-block></script></scripts></sprite><watcher var="block result" style="normal" x="15" y="243" color="243,118,29"/></sprites></stage><variables><variable name="block result"><l>Error: expecting a 커맨드 / 리포터 / 프레디키트 / hat but getting a 문자</l></variable><variable name="문장의 각 글자를 베껴쓴 값"><list struct="atomic" id="765"></list></variable><variable name="새 줄을 띄어쓰기로 삼았을 때 커서의 행 위치"><l>1</l></variable><variable name="문장 입력값"><l></l></variable><variable name="텍스트에디터 색상"><list id="766"><item><color>0,0,0,1</color></item><item><color>0.0025500000000167056,0,127.5,1</color></item></list></variable><variable name="텍스트에디터 크기"><list struct="atomic" id="769">12,2</list></variable><variable name="텍스트에디터x"><l>-200</l></variable><variable name="텍스트에디터y"><l>100</l></variable></variables></scene></scenes></project><media name="lisp to blocks" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"></media></snapdata>