<snapdata remixID="10376963"><project name="Recursion Tree" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><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" scheduled="false" id="1"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Sprite" idx="1" x="2.2737367544323206e-13" y="-2.842170943040401e-14" heading="20" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="145,126.80000000000003,25.999999999999986,1" pen="tip" id="8"><costumes><list struct="atomic" id="9"></list></costumes><sounds><list struct="atomic" id="10"></list></sounds><blocks></blocks><variables></variables><scripts><script x="84" y="49.66666666666643"><custom-block s="downup %s"><l>hello</l></custom-block></script><script x="10" y="84"><block s="receiveGo"></block><custom-block s="setup"></custom-block><block s="doSetVar"><l>shapes</l><block s="reportNewList"><list><block s="reifyScript"><script><custom-block s="square"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="triangle"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="star"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="Vee"></custom-block></script><list></list></block></list></block></block></script><script x="263" y="213.6666666666667"><block s="receiveKey"><l><option>space</option></l></block><custom-block s="setup"></custom-block><block s="setColor"><color>145,26,68,1</color></block><custom-block s="Vee"></custom-block></script><script x="20" y="204.99999999999991"><block s="receiveKey"><l><option>up arrow</option></l></block><block s="doIf"><block s="reportLessThan"><block s="reportListAttribute"><l><option>length</option></l><block var="shapes"/></block><l>7</l></block><script><block s="doAddToList"><block s="reifyScript"><script><custom-block s="Vee"></custom-block></script><list></list></block><block var="shapes"/></block><block s="doAddToList"><block s="reifyScript"><script><custom-block s="Vee"></custom-block></script><list></list></block><block var="shapes"/></block></script></block></script><script x="45" y="360.9999999999999"><block s="receiveKey"><l><option>down arrow</option></l></block><block s="doDeleteFromList"><l><option>last</option></l><block var="shapes"/></block></script></scripts></sprite><watcher var="shapes" style="normal" x="7.5833333333332575" y="7.583333333333329" color="243,118,29" extX="80" extY="70"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="all but first letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="199" collapsed="false">Takes a text string as input, and reports a new text string containing all but the first character of the input.</comment><header></header><code></code><translations>pt:_ sem o primeiro caractere&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><block s="doIf"><block s="reportIsA"><block var="string"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="all but first letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>str</l></list><l>return str.slice(1);</l></block><list><custom-block s="require nonempty %s %s"><block var="string"/><l>All but first of empty word.</l></custom-block></list></block></block></script><scripts><script x="11.333333333333334" y="249.0000000000001"><block s="doWarp"><script><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>2</l></block><block s="doUntil"><block s="reportGreaterThan"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></scripts></block-definition><block-definition s="all but first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="223.000001" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the first word, with one space between words and no spaces at the beginning or end. (Note: consider using SENTENCE➞LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a primeira palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportCDR"><block var="sentence"/></block></block></script></block></script></block><block s="doReport"><custom-block s="list $arrowRight sentence %l"><block s="reportCDR"><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>All but first of empty sentence.</l></custom-block></block></custom-block></block></script><scripts><script x="13.333333333333334" y="368.8888888888889"><block s="doDeclareVariables"><list><l>index</l><l>bf</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bf</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportGreaterThan"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doSetVar"><l>bf</l><block s="reportJoinWords"><list><block var="bf"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block var="bf"/></block></script></block></script></scripts></block-definition><block-definition s="all but last letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="218" collapsed="false">Takes a text string as input, and reports a new text string containing all but the last letter of the input.</comment><header></header><code></code><translations>pt:_ sem o último caractere&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><block s="doIf"><block s="reportIsA"><block var="string"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="all but last letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>str</l></list><l>return str.slice(0,-1);</l></block><list><custom-block s="require nonempty %s %s"><block var="string"/><l>All but last of empty word.</l></custom-block></list></block></block></script><scripts><script x="10" y="264.77777777777777"><block s="doWarp"><script><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></scripts></block-definition><block-definition s="all but last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211.99999999999997" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the last word, with one space between words and no spaces at the beginning or end.  (Note: consider using SENTENCE-&gt;LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a última palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>arr</l></list><l>return new List(arr.itemsArray().slice(0,-1));</l></block><list><block var="sentence"/></list></block></block></script></block></script></block><block s="doReport"><custom-block s="list $arrowRight sentence %l"><block s="evaluate"><block s="reportJSFunction"><list><l>arr</l></list><l>return new List(arr.asArray().slice(0,-1));</l></block><list><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>All but last of empty sentence.</l></custom-block></list></block></custom-block></block></script><scripts><script x="9.333333333333334" y="384.4444444444446"><block s="doDeclareVariables"><list><l>index</l><l>bl</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bl</l><l></l></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><l>1</l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportLessThan"><block var="index"/><l>1</l></block><script><block s="doSetVar"><l>bl</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="bl"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doReport"><block var="bl"/></block></script></block></script><script x="249" y="393.55555555555566"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="index"/><block s="reportListAttribute"><l><option>length</option></l><block var="sentence"/></block></block></autolambda><list><l>value</l><l>index</l></list></block><block var="sentence"/></block></script></scripts></block-definition><block-definition s="first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="236" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the first word, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a primeira palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="sentence"/></block></block></script></block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>First of empty sentence.</l></custom-block></block></block></script></block></script><scripts><script x="9.333333333333334" y="345.5555555555555"><block s="doDeclareVariables"><list><l>index</l><l>first</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>first</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block></script></block><block s="doReport"><block var="first"/></block></script></block></script></scripts></block-definition><block-definition s="last letter of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="260" collapsed="false">Takes a text string as input, and reports the last character in the string.</comment><header></header><code></code><translations>pt:o último caractere de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="last letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></block><script><custom-block s="error %txt"><l>Last of empty word.</l></custom-block></script></block><block s="doReport"><block s="reportLetter"><block s="reportStringSize"><block var="word"/></block><block var="word"/></block></block></script></block-definition><block-definition s="last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="262" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the last word of the input, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a última palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><block var="sentence"/></block></block></script></block></script></block><block s="doReport"><block s="reportListItem"><l><option>last</option></l><custom-block s="require nonempty %s %s"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block><l>Last of empty sentence.</l></custom-block></block></block></script><scripts><script x="25.333333333333332" y="276.22222222222223"><block s="doDeclareVariables"><list><l>index</l><l>last</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>last</l><l></l></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block></script></block><block s="doReport"><block var="last"/></block></script></block></script></scripts></block-definition><block-definition s="empty word? %&apos;word&apos;" type="predicate" category="operators"><comment x="0" y="0" w="208" collapsed="false">Takes a text string as input, and reports TRUE if the string has no characters in it of any kind, otherwise false.</comment><header></header><code></code><translations>pt:a palavra _ está vazia&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="empty word? %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></block></block></script></block-definition><block-definition s="empty sentence? %&apos;sentence&apos;" type="predicate" category="operators"><comment x="0" y="0" w="221" collapsed="false">Takes a text string as input, and reports TRUE if the input contains no characters other than spaces (therefore, no words when the string is considered as a sentence), otherwise FALSE.</comment><header></header><code></code><translations>pt:a frase _ está vazia&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListIsEmpty"><block var="sentence"/></block></block></script></block><block s="doReport"><block s="reportListIsEmpty"><custom-block s="sentence $arrowRight list %txt"><block var="sentence"/></custom-block></block></block></script><scripts><script x="12" y="258"><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></script></scripts></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><comment x="0" y="0" w="230.66666666666666" collapsed="false">Like JOIN, takes any number of words (text strings) and reports a sentence with its inputs concatenated, but inserts a blank space between the inputs.&#xD;Consider using SENTENCE (Lists palette) instead.</comment><header></header><code></code><translations>de:füge Wörter zusammen _&#xD;ca:uneix les paraules _&#xD;es:unir las palabras _&#xD;fr:fusionne les mots _&#xD;pt:uma frase com as palavras _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="words"/></block><script><block s="doReport"><l></l></block></script></block><block s="doDeclareVariables"><list><l>first</l><l>bf</l></list></block><block s="doSetVar"><l>first</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><custom-block s="join words %mult%txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block><block s="reportListItem"><l>1</l><block var="words"/></block></block></block><block s="doSetVar"><l>bf</l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block><block s="doIf"><custom-block s="empty sentence? %txt"><block var="bf"/></custom-block><script><block s="doReport"><block var="first"/></block></script></block><block s="doIf"><custom-block s="empty sentence? %txt"><block var="first"/></custom-block><script><block s="doReport"><block var="bf"/></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block var="first"/><l> </l><block var="bf"/></list></block></block></script><scripts><script x="16.666666666666668" y="409.6666666666668"><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><script><block s="doIfElse"><custom-block s="empty sentence? %txt"><block var="first"/></custom-block><script><block s="doReport"><block var="bf"/></block></script><script><block s="doIfElse"><custom-block s="empty sentence? %txt"><block var="bf"/></custom-block><script><block s="doReport"><block var="first"/></block></script><script><block s="doReport"><block s="reportJoinWords"><list><block var="first"/><l> </l><block var="bf"/></list></block></block></script></block></script></block></script></block><block s="doIf"><custom-block s="empty sentence? %txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></scripts></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><comment x="0" y="0" w="165.33333333333334" collapsed="false">Takes a sentence in list form and reports the sentence as a text string.</comment><header></header><code></code><translations>de:Liste $arrowRight Satz _&#xD;ca:llista $arrowRight frase _&#xD;es:lista $arrowRight frase _&#xD;fr:liste $arrowRight phrase _&#xD;pt:uma frase com as palavras em _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="196" collapsed="false">Takes a sentence in text string form and reports the sentence as a list of its words.</comment><header></header><code></code><translations>de:Satz $arrowRight Liste _&#xD;ca:frase $arrowRight llista _&#xD;es:frase $arrowRight lista _&#xD;fr:phrase $arrowRight liste _&#xD;pt:uma lista com as palavras da frase _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportStringSize"><l></l></block><l>0</l></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="text"/><l><option>word</option></l></block></block></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="146.42857142857144" collapsed="false">report a list in which each item is one letter from the input word</comment><header></header><code></code><translations>de:Wort $arrowRight Liste _&#xD;ca:paraula $arrowRight llista _&#xD;es:palabra $arrowRight lista _&#xD;fr:mot $arrowRight liste _&#xD;pt:uma lista com os caracteres da palavra _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="word $arrowRight list %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><comment x="0" y="0" w="158.57142857142858" collapsed="false">join all the items of the input list&#xD;into a single word, and report it</comment><header></header><code></code><translations>de:Liste $arrowRight Wort _&#xD;ca:llista $arrowRight paraula _&#xD;es:lista $arrowRight palabra _&#xD;fr:liste $arrowRight mot _&#xD;pt:uma palavra com os caracteres em _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="list"/></block><script><block s="doReport"><block var="list"/></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>list</option></l></block></autolambda><list></list></block><block var="list"/></block><l></l></block><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><block s="reportNewList"><list><custom-block s="list $arrowRight word %l"><l/></custom-block></list></block><l></l></block></autolambda><list></list></block><block var="list"/></block></block></script></block-definition><block-definition s="sentence %&apos;phrase&apos;" type="reporter" category="lists"><comment x="0" y="0" w="302.6666666666667" collapsed="false">SENTENCE is the main constructor for sentences, represented&#xD;as lists of words.  It takes zero or more inputs, each of which can&#xD;be either a list or a text string.  If a list, the input is assumed to be&#xD;a list of words.  If a text string, it is converted to a list of words using&#xD;SENTENCE→LIST.  Then all the lists of words are appended to form a new list of words.&#xD;&#xD;If the inputs are lists of lists rather than lists of words, SENTENCE,&#xD;like APPEND, does only one level of flattening, reporting a list of&#xD;all the items of all the input lists.</comment><header></header><code></code><translations></translations><inputs><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><l></l><custom-block s="sentence $arrowRight list %txt"><l></l></custom-block></block></autolambda><list></list></block><block var="phrase"/></block></block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg);</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="printable %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="188.66666666666666" collapsed="false">Takes a (possibly deep) list as input,&#xD;and reports a human-readable text form &#xD;of the list (namely, Lisp notation).</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><l>()</l></block></script></block><block s="doReport"><block s="reportJoinWords"><list><l>(</l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="printable %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> </l><l></l></list></block></autolambda><list></list></block></block><l>)</l></list></block></block></script></block-definition><block-definition s="require nonempty %&apos;text&apos; %&apos;message&apos;" type="reporter" category="operators"><comment x="0" y="0" w="220" collapsed="false">Helper function for word/sentence library.&#xD;Reports its first input, unless that input is empty, in which case it gives its second input as an error message.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportIfElse"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block><block s="reportListIsEmpty"><block var="text"/></block><block s="reportEquals"><block s="reportStringSize"><block var="text"/></block><l>0</l></block></block><script><custom-block s="error %txt"><block var="message"/></custom-block></script><script><block s="doReport"><block var="text"/></block></script></block></script></block-definition><block-definition s="first letter of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="260" collapsed="false">Takes a text string as input, and reports the first character in the string.</comment><header></header><code></code><translations>pt:a primeira palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="first letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script><script><block s="doReport"><block s="reportLetter"><l>1</l><custom-block s="require nonempty %s %s"><block var="word"/><l>First of empty word.</l></custom-block></block></block></script></block></script><scripts><script x="14.666666666666666" y="232.8888888888888"><block s="doDeclareVariables"><list><l>index</l><l>first</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>first</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block></script></block><block s="doReport"><block var="first"/></block></script></block></script></scripts></block-definition><block-definition s="downup %&apos;word&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block s="reportStringSize"><l>world</l></block><l>1</l></block><script><block s="doReport"><block var="word"/></block></script><script><block s="doReport"><custom-block s="join words %mult%txt"><list><block var="word"/><l></l><custom-block s="downup %s"><custom-block s="all but last letter of %txt"><block var="word"/></custom-block></custom-block><l></l><block var="word"/></list></custom-block></block></script></block></script></block-definition><block-definition s="square" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="down"></block><block s="doWarp"><script><block s="doRepeat"><l>4</l><script><block s="forward"><l>10</l></block><block s="turn"><l>90</l></block></script></block></script></block><block s="up"></block></script></block-definition><block-definition s="setup" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="clear"></block><block s="up"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="down"></block><block s="setHeading"><l>0</l></block></script></block-definition><block-definition s="triangle" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="down"></block><block s="doWarp"><script><block s="doRepeat"><l>3</l><script><block s="forward"><l>10</l></block><block s="turn"><l>120</l></block></script></block></script></block><block s="up"></block></script></block-definition><block-definition s="pentagon" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="down"></block><block s="doWarp"><script><block s="doRepeat"><l>5</l><script><block s="forward"><l>10</l></block><block s="turn"><l>72</l></block></script></block></script></block><block s="up"></block></script></block-definition><block-definition s="star" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="down"></block><block s="doWarp"><script><block s="doRepeat"><l>5</l><script><block s="forward"><l>20</l></block><block s="turn"><l>144</l></block></script></block></script></block><block s="up"></block></script></block-definition><block-definition s="Vee" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="turnLeft"><l>20</l></block><block s="forward"><l>25</l></block><block s="doRun"><block s="reportListItem"><l><option>any</option></l><block var="shapes"/></block><list></list></block><block s="down"></block><block s="forward"><l>-25</l></block><block s="turn"><l>40</l></block><block s="changePenHSVA"><l><option>hue</option></l><l>20</l></block><block s="forward"><l>25</l></block><block s="doRun"><block s="reportListItem"><l><option>any</option></l><block var="shapes"/></block><list></list></block><block s="forward"><l>-25</l></block><block s="turnLeft"><l>00</l></block></script></block-definition></blocks><variables><variable name="shapes"><list id="1730"><item><context id="1731"><inputs></inputs><variables></variables><script><custom-block s="square"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><context id="1735"><inputs></inputs><variables></variables><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></context></item><item><context id="1737"><inputs></inputs><variables></variables><script><custom-block s="triangle"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="1735"></ref></context></item><item><context id="1741"><inputs></inputs><variables></variables><script><custom-block s="star"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="1735"></ref></context></item><item><context id="1745"><inputs></inputs><variables></variables><script><custom-block s="Vee"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="1735"></ref></context></item><item><context id="1749"><inputs></inputs><variables></variables><script><custom-block s="Vee"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><context id="1753"><inputs></inputs><variables></variables><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin></context></context></item><item><context id="1755"><inputs></inputs><variables></variables><script><custom-block s="Vee"></custom-block></script><receiver><ref id="8"></ref></receiver><origin><ref id="8"></ref></origin><ref id="1753"></ref></context></item></list></variable></variables></project><media name="Recursion Tree" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>