Home
current PDF version
Contents
1. 0 0 c eee eee 87 LOT Error Codes 2 u0s 3 A aa ates Reta ais 87 11 Special Variables o o o ooooooooo 89 allowgetseti neseni sa i a eee uae 89 LULA A A ee ee ee 89 CASCIPNOLER Pira aa hawaiian bd eho in hed bape 89 commandline adi s 89 CILACH iaa eke en eae ea a rie eee SA eh eee 89 PT Pcia Pedet RA A A te 90 KA A A a ha 90 loadnoisily cocino arg a ia 90 printdepthlimitiee gi eiua tetas o as 90 printwidthlimite ia xe ali Seeds huis ados 90 r edefp ele tele te el ania ana da peas eats 91 SCALE CU Pe erea ace cece hig dost gotta cE ded aay bravo tn Odea seals apart AE EEA 91 UNnburyoned it sce Sad ce aes RN Ree ere ae et Rake eee dae 91 usealternatenaMeS 2 ccc cece eee nett nent e en eeeee 91 lOSOVET SION iss Fer es stud a oP ete eee tie Hane bra baa adda 91 logoplattoriive oi Oo samen 91 12 Internationalization 005 93 xl Chapter 1 Introduction 1 1 Introduction 1 1 Overview Copyright 1993 by the Regents of the University of California This program is free software you can redistribute it and or modify it under the terms of the GNU General Public License as published by the Free Software Foundation either version 2 of the License or at your option any later version This program is distributed in the hope that it will be useful but WITHOUT ANY WAR RANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See th
2. See REDEFP page 91 text TEXT procname outputs the text of the procedure named procname in the form expected by DEFINE a list of lists the first of which describes the inputs to the procedure and the rest of which are the lines of its body The text does not reflect formatting information used when the procedure was defined such as continuation lines and extra spaces fulltext FULLTEXT procname outputs a representation of the procedure procname in which formatting information is preserved If the procedure was defined with TO EDIT or LOAD then the output is a list of words Each word represents one entire line of the definition in the form output by READWORD including extra spaces and continuation lines The last member of the output represents the END line If the procedure was defined with DEFINE then the output is a list of lists If these lists are printed one per line the result will look like a definition using TO Note the output from FULLTEXT is not suitable for use as input to DEFINE See TO page 49 EDIT page 61 LOAD page 63 DEFINE page 50 copydef COPYDEF newname oldname command Makes newname a procedure identical to oldname The latter may be a primi tive If newname was already defined its previous definition is lost If newname was already a primitive the redefinition is not permitted unless the variable REDEFP has the value TRUE Note dialects of Logo differ as to the order of inputs t
3. THROW page 69 ERROR page 70 CATCH page 69 PAUSE page 70 CONTINUE page 70 10 1 Error Codes Here are the numeric codes that appear as the first member of the list output by ERROR when an error is caught with the corresponding messages Some messages may have two different codes depending on whether or not the error is recoverable that is a substitute value can be provided through the ERRACT mechanism in the specific context Some messages are warnings rather than errors these will not be caught Errors 0 and 32 are so bad that Logo exits immediately O Fatal internal error can t be caught Pe FOWMOOAON ODO OPWNF 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 32 33 34 35 36 37 38 39 40 41 42 43 Ee BERKELEY LOGO 6 0 Out of memory Stack overflow Turtle out of bounds proc doesn t like datum as input not recoverable proc didn t output to proc Not enough inputs to proc proc doesn t like datum as input recoverable Too much inside s You don t say what to do with datum gt not found var has no value Unexpected I don t know how to proc recoverable Can t find catch tag for throwtag proc is already defined Stopped Already dribbling File system error Assuming you mean IFELSE not IF warning only var shadowed by local in procedure call warning only Throw Error proc is a primitive Can t use TO inside a procedure I don t k
4. XCOR library procedure outputs a number the turtle s X coordinate ycor YCOR library procedure outputs a number the turtle s Y coordinate heading HEADING outputs a number the turtle s heading in degrees towards TOWARDS pos outputs a number the heading at which the turtle should be facing so that it would point from its current position to the position given as the input scrunch SCRUNCH outputs a list containing two numbers the X and Y scrunch factors as used by SETSCRUNCH But note that SETSCRUNCH takes two numbers as inputs not one list of numbers See SETSCRUNCH page 42 6 3 Turtle and Window Control showturtle SHOWTURTLE ST makes the turtle visible BERKELEY LOGO 6 0 hideturtle HIDETURTLE HT makes the turtle invisible It s a good idea to do this while you re in the middle of a complicated drawing because hiding the turtle speeds up the drawing substantially clean CLEAN erases all lines that the turtle has drawn on the graphics window The turtle s state posi tion heading pen mode etc is not changed clearscreen CLEARSCREEN CS erases the graphics window and sends the turtle to its initial position and heading Like HOME and CLEAN together See HOME page 38 wrap WRAP tells the turtle to enter wrap mode From now on if the turtle is asked to move past the boundary of the graphics window it will wrap around and reappear at the opposite edge
5. if IF tf instructionlist IF tf instructionlisti instructionlist2 command If the first input has the value TRUE then IF runs the second input If the first input has the value FALSE then IF does nothing If given a third input IF acts like IFELSE as described below It is an error if the first input is not either TRUE or FALSE For compatibility with earlier versions of Logo if an IF instruction is not enclosed in parentheses but the first thing on the instruction line after the second input expression is a literal list i e a list in square brackets the IF is treated as if it were IFELSE but a warning message is given If this aberrant IF appears in a procedure body the warning is given only the first time the procedure is invoked in each Logo session ifelse IFELSE tf instructionlist1 instructionlist2 command or operation If the first input has the value TRUE then IFELSE runs the second input If the first input has the value FALSE then IFELSE runs the third input IFELSE outputs a value if the instructionlist contains an expression that outputs a value test TEST tf command Remembers its input which must be TRUE or FALSE for use by later IFTRUE or IFFALSE instructions The effect of TEST is local to the procedure in which it is used any corresponding IFTRUE or IFFALSE must be in the same procedure or a subprocedure See IFFALSE page 68 iftrue IFTRUE instructionlist IFT instructionlist command Ru
6. is printed and control returns to toplevel Without user interaction means that if ERRACT invokes PAUSE and the user provides an incorrect value this loop prevention mechanism does not take effect and the user gets to try again During the running of the ERRACT instructionlist ERRACT is locally unbound so an error in the ERRACT instructions themselves will not cause a loop In particular an error during a pause will not cause a pause within a pause unless the user reassigns the value PAUSE to ERRACT during the pause But such an error will not return to toplevel it will remain within the original pause loop If there is no available ERRACT value Logo handles the error by generating an internal THROW ERROR A user program can also generate an error condition deliberately by in voking THROW If this throw is not caught by a CATCH ERROR in the user program it is eventually caught either by the toplevel instruction loop or by a pause loop which prints the error message An invocation of CATCH ERROR in a user program locally unbinds ERRACT so the effect is that whichever of ERRACT and CATCH ERROR is more local will take precedence If a floating point overflow occurs during an arithmetic operation or a two input mathe matical function like POWER is invoked with an illegal combination of inputs the doesn t like message refers to the second operand but should be taken as meaning the combina tion See ERRACT page 89
7. Logo automatically switches from fullscreen to splitscreen whenever anything is printed In the DOS version switching from fullscreen to splitscreen loses the part of the picture that s hidden by the text window This design decision follows from the scarcity of memory so that the extra memory to remember an invisible part of a drawing seems too expensive splitscreen SPLITSCREEN SS rearranges the size and position of windows to allow some room for text interaction while also keeping most of the graphics window visible The details differ among machines Compare TEXTSCREEN and FULLSCREEN See TEXTSCREEN page 41 setscrunch SETSCRUNCH xscale yscale adjusts the aspect ratio and scaling of the graphics display After this command is used all further turtle motion will be adjusted by multiplying the horizontal and vertical extent of the motion by the two numbers given as inputs For example after the instruction SETSCRUNCH 2 1 motion at a heading of 45 degrees will move twice as far horizontally as vertically If your squares don t come out square try this Alternatively you can deliberately misadjust the aspect ratio to draw an ellipse For all modern computers both scale factors are initially 1 For DOS machines the scale factors are initially set according to what the hardware claims the aspect ratio is but the hardware sometimes lies For DOS the values set by SETSCRUNCH are remembered in a file called scrunch
8. Ward a ada tad anda Eo is 37 Putne eT E dad a pala 9 A eS La ieee Sh RE OS Bi oe So ee Bo 41 wllprintp ss hives wives ira eeess ieee des 90 allsereen teiten errur aa eels eames tae gare 41 Ulla A E 51 G Eladio he 64 A bea ecto Gare Gee tre NE ache 10 Petters A eee ata te ae tee 2 Globalis vec as na ee Peewee es tee aes 52 COCO nde seek bs 71 PPLOP teriero ed at WS 53 predator A Balers 32 sreaterequall 21 hens rs Malte eee 32 greaterequalp cece eee eee eee eee eee ee 32 STCALENP ses O IA tise 32 H E ee slercoemeees cages 39 helps evr wnt aasence de eee es Mee bees 63 Hideturtles seresa urat lA 40 homers Aa 38 DA is eae 4 eae se 40 I Da wee ee ees Li es nie ke e ba ee Rea ca 68 Mel daa 68 A 5 cel stecgue iis eek cuttin 2 atte td 68 Malta ii 68 A AN 68 INDEX AGNOL Esse le lt eee eh ES Roa tale a 72 increasefont 00 ccc cece rr 27 A A OR 30 INVOKE ra cat Bach oak a o 76 N e 3 Sait dd a 31 MAMA ad eat 12 Keyl asst e sae ee ae VE sige pees eels 26 Kevactii rt Mtete dee ae ded eee 90 A 26 A RN alae ae 41 la bDelSIZ eta 43 LS A a ed 11 leaving ucblogo cnica toe 5 Va eRe RAS 38 A teed aed EE 32 le ssequal ov iact arenae EE ii ie 32 less UP cats aces hs Se tate aD 32 LSD Hi ht oe ates LA OR eee eee ae ee 32 line continuation 0 00 eee eee eee eee 6 USA od aah at 9 S622 iy ae Sogo ee ges ae lod ae E NAA 14 MSP a aed Sd Raed ek AR Se 14 listtOarray A da 10 Maat 30 EE 63 load iS Vai ie 9
9. or to Logo crashes and coredumps if the butfirst of a list is not itself a list setitem SETITEM index array value command Changes the indexth member of array to be value like SETITEM but without checking for circularity WARNING Primitives whose names start with a period are dangerous Their use by non experts is not recommended The use of SETITEM can lead to circular arrays which will get some Logo primitives into infinite loops See SETITEM page 12 push PUSH stackname thing library procedure command Adds the thing to the stack that is the value of the variable whose name is stackname This variable must have a list as its value the initial value should be the empty list New members are added at the front of the list pop POP stackname library procedure 14 BERKELEY LOGO 6 0 outputs the most recently PUSHed member of the stack that is the value of the variable whose name is stackname and removes that member from the stack queue QUEUE queuename thing library procedure command Adds the thing to the queue that is the value of the variable whose name is queuename This variable must have a list as its value the initial value should be the empty list New members are added at the back of the list dequeue DEQUEUE queuename library procedure outputs the least recently QUEUEd member of the queue that is the value of the variable whose name is queuename and removes that member from the queue
10. vector dot product op apply sum map product a b end The third form of template is named slot or lambda form This form is indicated by a template list containing more than one member whose first member is itself a list The first member is taken as a list of names local variables are created with those names and given the available data in order as their values The number of names must equal the number of available data This form is needed primarily when one iteration tool must be used within the template list of another and the notation would be ambiguous in the inner template Example to matmul mi m2 tm2 transpose m2 multiply two matrices output map row map col dotprod row col tm2 m1 end The fourth form is procedure text form a variant of lambda form In this form the template list contains at least two members all of which are lists This is the form used by the DEFINE and TEXT primitives and APPLY accepts it so that the text of a defined procedure can be used as a template Note The fourth form of template is interpreted differently from the others in that Logo considers it to be an independent defined procedure for the purposes of OUTPUT and STOP For example the following two instructions are identical BERKELEY LOGO 6 0 print apply lx x 3 5 8 print apply Lx output x 3 5 8 although the first instruction is in named slot form and the second is in proced
11. 2 3 4 a1 a2 a3 a4 bi b2 b3 b4 c1 c2 c3 c4 For compatibility with the version in the first edition of CSLS CROSSMAP templates may use the notation 1 instead of 1 to indicate slots See MAP page 77 cascade CASCADE endtest template startvalue library procedure CASCADE endtest tmp1 svi tmp2 sv2 CASCADE endtest tmp1 svi tmp2 sv2 finaltemplate 1 Computer Science Logo Style BERKELEY LOGO 6 0 outputs the result of applying a template or several templates as explained below repeat edly with a given value filling the slot the first time and the result of each application filling the slot for the following application In the simplest case CASCADE has three inputs The second input is a one slot expression template That template is evaluated some number of times perhaps zero On the first evaluation the slot is filled with the third input on subsequent evaluations the slot is filled with the result of the previous evaluation The number of evaluations is determined by the first input This can be either a nonnegative integer in which case the template is evaluated that many times or a predicate expression template in which case it is evaluated with the same slot filler that will be used for the evaluation of the second input repeatedly and the CASCADE evaluation continues as long as the predicate value is FALSE In other words the predicate template indicates the condition for stopping If
12. 2 4 Predicates wordp WORDP thing WORD thing outputs TRUE if the input is a word FALSE otherwise listp LISTP thing LIST thing outputs TRUE if the input is a list FALSE otherwise arrayp ARRAYP thing ARRAY thing outputs TRUE if the input is an array FALSE otherwise emptyp EMPTYP thing EMPTY thing outputs TRUE if the input is the empty word or the empty list FALSE otherwise equalp EQUALP thingl thing2 EQUAL thingl thing2 thingi thing2 outputs TRUE if the inputs are equal FALSE otherwise Two numbers are equal if they have the same numeric value Two non numeric words are equal if they contain the same Chapter 2 Data Structure Primitives 15 characters in the same order If there is a variable named CASEIGNOREDP whose value is TRUE then an upper case letter is considered the same as the corresponding lower case letter This is the case by default Two lists are equal if their members are equal An array is only equal to itself two separately created arrays are never equal even if their members are equal It is important to be able to know if two expressions have the same array as their value because arrays are mutable if for example two variables have the same array as their values then performing SETITEM on one of them will also change the other See CASEIGNOREDP page 89 SETITEM page 12 notequalp NOTEQUALP thing1 thing2 NOTEQUAL thing1 thing2 thing1 lt gt thing2 outputs
13. 3 Entering and Leaving Logo The process to start Logo depends on your operating system Unix Type the word logo to the shell The directory in which you ve installed Logo must be in your path DOS Change directories to the one containing Logo probably C UCBLOGO Then type UCBLOGO for the large memory version or BL for the 640K version Mac Double click on the LOGO icon within the UCB Logo folder Windows Double click on the UCBWLOGO icon in the UCBLOGO folder To leave Logo enter the command bye On startup Logo looks for a file named startup lg in the system Logo library and if found loads it Then it looks for startup 1g in the user s home directory or the current directory depending on the operating system and loads that These startup files can be used to predefine procedures e g to provide non English names for primitive procedures Under Unix DOS or Windows if you include one or more filenames on the command line when starting Logo those files will be loaded before the interpreter starts reading commands from your terminal If you load a file that executes some program that includes a bye command Logo will run that program and exit You can therefore write standalone programs in Logo and run them with shell batch scripts To support this technique Logo does not print its usual welcoming and parting messages if you give file arguments to the logo command If a command line argument is just a hyphen t
14. VAR and whose value is the word X and the variable whose name is X and whose value changes from 5 to 6 Suppose we changed the behavior of MAKE so that it took the word after MAKE as the name of the variable to change we would be unable to write INCREMENT 4 BERKELEY LOGO 6 0 TO INCREMENT VAR nonworking MAKE VAR THING VAR 1 END This would assign a new value to VAR not to X What we can do is to allow an alternative to MAKE a setter procedure for a particular variable The notation will be SETFOO 7 PRINT FOO 7 SETFOO is a setter procedure that takes one input in this case the input 7 and assigns its value to the variable named FOO Berkeley Logo allows users to choose either the traditional notation in which case the same name can be used both for a procedure and for a variable or the getter setter notation in which variable FOO is set with SETFOO and examined with FOO but the same name can t be used for procedure and variable Here is how this choice is allowed Berkeley Logo uses traditional notation with procedures distinct from variables However if there is a variable named AllowGetSet whose value is TRUE which there is by default when Logo starts up then if a Logo instruction refers to a nonexistent procedure so that the error message I don t know how to would result Logo tries the following two steps 1 If the name is at least four characters long and the first three characters a
15. above has been done Since finding the value of a spe cific known variable name is such a common operation Logo also provides an abbreviated notation that combines THING with quote PRINT MY VAR The colon which Logo old timers pronounce dots replaces THING and in the earlier version of the instruction Newcomers to Logo often complain about the need for all this punctuation In particular Logo programmers who learned about dots and quotes without also learning about THING wonder why an instruction such as MAKE NEW VAR OLD VAR uses two different punctuation marks to identify the two variables Having read the para graphs above you will understand that actually both variable names are quoted but the procedure THING is invoked to find the value of OLD VAR since it s that value not OLD VAR s Chapter 1 Introduction 3 name that MAKE needs to know It wouldn t make sense to ask for THING of NEW VAR since we haven t given NEW VAR a value yet Although Logo s punctuation rules make sense once understood they do form a barrier to entry for the Logo beginner Why then couldn t Logo be designed so that an unpunctuated word would represent a procedure if there is a procedure by that name or a variable if there is a variable by that name Then we could say PRINT MY VAR and Logo would realize that MY VAR is the name of a variable not of a procedure The traditional reason not to use this convention is that L
16. almost but not quite be duplicated by ordinary Logo procedures For example here is an ordinary procedure version of REPEAT to my repeat num instructions if num 0 stop run instructions my repeat num 1 instructions end This version works fine for most purposes e g my repeat 5 print hello But it doesn t work if the instructions to be carried out include OUTPUT STOP or LOCAL For example consider this procedure to example print Guess my secret word You get three guesses repeat 3 type 7 if readword secret pr Right stop print Sorry the word was secret end This procedure works as written but if MY REPEAT is used instead of REPEAT it won t work because the STOP will stop MY REPEAT instead of stopping EXAMPLE as desired The solution is to make MY REPEAT a macro Instead of actually carrying out the computa tion a macro must return a list containing Logo instructions The contents of that list are evaluated as if they appeared in place of the call to the macro Here s a macro version of REPEAT macro my repeat num instructions if num 0 output output sentence instructions list my repeat num 1 instructions end Every macro is an operation it must always output something Even in the base case MY REPEAT outputs an empty instruction list To show how MY REPEAT works let s take the example BERKELEY LOGO 6 0 my repeat 5 print hello For this example
17. be procedure or variable names but aren t any more without an argument GC does a generational garbage collection which means that only recently created nodes are examined The latter is usually good enough setsegmentsize SETSEGMENTSIZE num command Sets the number of nodes that Logo allocates from the operating system at once to num which must be a positive integer The name is dotted because bad things will happen if you use a number that s too small or too large for your computer The initial value is 16 000 for most systems but is smaller for 68000 based Macs Making it larger will speed up computations by reducing the number of garbage collections at the cost of allocating more memory than necessary Chapter 8 Control Structures 8 Control Structures 8 1 Control Note in the following descriptions an instructionlist can be a list or a word In the latter case the word is parsed into list form before it is run Thus RUN READWORD or RUN READLIST will work The former is slightly preferable because it allows for a continued line with that includes a comment with on the first line A tf input must be the word TRUE the word FALSE or a list If it s a list then it must be a Logo expression which will be evaluated to produce a value that must be TRUE or FALSE The comparisons with TRUE and FALSE are always case insensitive A runlist can consist of either a single expression that produces a value or zero
18. counterclockwise from the positive X axis The turtle is represented as an isoceles triangle the actual turtle position is at the midpoint of the base the short side However the turtle is drawn one step behind its actual position so that the display of the base of the turtle s triangle does not obscure a line drawn perpendicular to it as would happen after drawing a square Colors are of course hardware dependent However Logo provides partial hardware inde pendence by interpreting color numbers 0 through 7 uniformly on all computers O black 1 blue 2 green 3 cyan 4 red 5 magenta 6 yellow 7 white Where possible Logo provides additional user settable colors how many are available de pends on the hardware and operating system environment If at least 16 colors are available Logo tries to provide uniform initial settings for the colors 8 15 8 brown 9 tan 10 forest 11 aqua 12 salmon 13 purple 14 orange 15 grey Logo begins with a black background and white pen 6 1 Turtle Motion forward FORWARD dist FD dist moves the turtle forward in the direction that it s facing by the specified distance measured in turtle steps back BACK dist BK dist moves the turtle backward i e exactly opposite to the direction that it s facing by the specified distance The heading of the turtle does not change BERKELEY LOGO 6 0 left LEFT degrees LT degrees turns the turtle counterclockwise by the specified angle
19. e dos 39 COD A A AA A ADA AA A 39 YEOT rr A A d 39 Heads a ai Spake aqme mea ia 39 COMAS A A A E E O a 39 A ATE EAE E EE hon eumt eile ta en ee ee bth oti Ba a ite 39 6 3 Turtle and Window Control 0 00 00 c ccc cee cece eee 39 SHOWUTGIEG EN citer Seles shh ED eS en e ern SA Moet ant ose 39 hid turtle s ri A A wes hee eae a a 40 vil CAE ATSC cis oe ete eae a reat bee ate eee eee 40 WIP A A A ad 40 WI A da 40 fen Cen O NN 40 MM re a rta 41 aled ine deea a std 41 label SS A E E E E a A ak eed het 41 setlabelh ight enre a nde nd ade eA ei 41 TEXUSCTECI yes bee ede A Ee ee oe a Pe ee lees 41 PUISCTECN 22 siete hens oats hei atk toe Coe a sey tele Oo arnt as 41 Splitscr en si ri Aaa eae 42 NS A A Pas et Bae be ave Ree aS 42 A wae tee eel nis pa sad oS ee eeu a NN O 42 norefr sh if 0 ese ide eine ia 42 6 4 Turtle and Window Queries 0 0 cece e eee eens 42 IO DA A A 43 SCTECENMOdE cin eiew eed ae MED a eh eee panda eae etna 43 t rtlemode erneer ada ads bees aAa 43 lADELSIZE cutres 43 6 5 Pen and Background Control 0 0 ec cece eee eee eee 43 Pend own sais eee e es 43 PENUD Sse Paseo nE ee hoe Lagu ste shone E Cee aay 43 PeNPaMNb A eae ar ele ea eo atl a ae 44 PENET ASE wha ee tate ne es ae ea eee ee oe 44 DETER e pds eee eS 44 SetpencolO cercar rra aos 44 setpalette sin uM den cua uae eed aaa eee 44 SCLPENSIZE A ea wid de hate A 44 Setpenpavvern Tucci ue Cone Gee ened nibh ty 45 IC 45 setbackgroun
20. error will be not the location of the THROW but the location where the procedure containing the THROW was invoked This allows user defined procedures to generate error messages as if they were primitives Note in this case the corresponding CATCH ERROR if any does not output since the second input to THROW is not considered a return value THROW SYSTEM immediately leaves Logo returning to the operating system without print ing the usual parting message and without deleting any editor temporary file written by EDIT See EDIT page 61 error ERROR outputs a list describing the error just caught if any If there was not an error caught since the last use of ERROR the empty list will be output The error list contains four members an integer code corresponding to the type of error the text of the error message as a single word including spaces the name of the procedure in which the error occurred and the instruction line on which the error occurred pause PAUSE command or operation Enters an interactive pause The user is prompted for instructions as at toplevel but with a prompt that includes the name of the procedure in which PAUSE was invoked Local variables of that procedure are available during the pause PAUSE outputs if the pause is ended by a CONTINUE with an input If the variable ERRACT exists and an error condition occurs the contents of that variable are run as an instructionlist Typically ERRACT is g
21. font used in the text and edit windows to the given integer input The desired size may not be available in which case the nearest available size will be used Note There is only a slight correlation between these integers and pixel sizes Our rough estimate is that the number of pixels of height is about 1 5 times the point size but it varies for different fonts See SETLABELHEIGHT for a different approach used for the graphics window textsize TEXTSIZE 28 BERKELEY LOGO 6 0 wxWidgets only outputs the point size of the font used in the text and edit windows See SETTEXTSIZE for a discussion of font sizing See LABELSIZE for a different approach used for the graphics window set font SETFONT fontname command wxWidgets only Set the font family used in all windows to the one named by the input Try Courier or Monospace as likely possibilities Not all computers have the same fonts installed It s a good idea to stick with monospace fonts ones in which all characters have the same width font FONT wxWidgets only outputs the name of the font family used in all windows Chapter 4 Arithmetic 29 4 Arithmetic 4 1 Numeric Operations sum SUM numi num2 SUM numi num2 num3 numi num2 outputs the sum of its inputs difference DIFFERENCE numi num2 numi num2 outputs the difference of its inputs Minus sign means infix difference in ambiguous contexts when preceded by a complete expression
22. height of a font are not separately controllable so the inverse of this operation is SETLABELHEIGHT which takes just one number for the desired height 6 5 Pen and Background Control The turtle carries a pen that can draw pictures At any time the pen can be UP in which case moving the turtle does not change what s on the graphics screen or DOWN in which case the turtle leaves a trace If the pen is down it can operate in one of three modes PAINT so that it draws lines when the turtle moves ERASE so that it erases any lines that might have been drawn on or through that path earlier or REVERSE so that it inverts the status of each point along the turtle s path pendown PENDOWN PD sets the pen s position to DOWN without changing its mode penup PENUP PU sets the pen s position to UP without changing its mode BERKELEY LOGO 6 0 penpaint PENPAINT PPT sets the pen s position to DOWN and mode to PAINT penerase PENERASE PE sets the pen s position to DOWN and mode to ERASE See ERASE page 57 penreverse PENREVERSE PX sets the pen s position to DOWN and mode to REVERSE This may interact in system dependent ways with use of color See REVERSE page 10 setpencolor SETPENCOLOR colornumber or rgblist SETPC colornumber or rgblist sets the pen color to the given number which must be a nonnegative integer There are initial assignments for the first 16 colors O black 1 blu
23. measured in degrees 1 360 of a circle right RIGHT degrees RT degrees turns the turtle clockwise by the specified angle measured in degrees 1 360 of a circle setpos SETPOS pos moves the turtle to an absolute position in the graphics window The input is a list of two numbers the X and Y coordinates setxy SETXY xcor ycor moves the turtle to an absolute position in the graphics window The two inputs are numbers the X and Y coordinates setx SETX xcor moves the turtle horizontally from its old position to a new absolute horizontal coordinate The input is the new X coordinate sety SETY ycor moves the turtle vertically from its old position to a new absolute vertical coordinate The input is the new Y coordinate setheading SETHEADING degrees SETH degrees turns the turtle to a new absolute heading The input is a number the heading in degrees clockwise from the positive Y axis home HOME moves the turtle to the center of the screen Equivalent to SETPOS O 0 SETHEADING O See SETPOS page 38 See SETHEADING page 38 Chapter 6 Graphics arc ARC angle radius draws an arc of a circle with the turtle at the center with the specified radius starting at the turtle s heading and extending clockwise through the specified angle The turtle does not move 6 2 Turtle Motion Queries pos POS outputs the turtle s current position as a list of two numbers the X and Y coordinates xXCOr
24. must be the same length In the case of a word output the results of the template evaluation must be words and they are concatenated with WORD In a template the symbol REST represents the portion of the data input to the right of the member currently being used as the slot filler That is if the data input is AB C D El and the template is being evaluated with replaced by B then REST would be replaced by C D E If multiple parallel slots are used then FREST 1 goes with 71 etc In a template the symbol represents the position in the data input of the member currently being used as the slot filler That is if the data input is A BC D El and the template is being evaluated with replaced by B then would be replaced by 2 See WORD page 9 map se MAP SE template data library procedure MAP SE template datal data2 outputs a list formed by evaluating the template list repeatedly and concatenating the results using SENTENCE That is the members of the output are the members of the results of the evaluations The output list might therefore be of a different length from that of the data input s If the result of an evaluation is the empty list it contributes nothing to the final output The data inputs may be words or lists In a template the symbol REST represents the portion of the data input to the right of the member currently being used as the slot filler That is if the data input is AB C D
25. num outputs the bitwise not of its input which must be an integer See NOT page 35 ashift ASHIFT numi num2 outputs numl arithmetic shifted to the left by num2 bits If num2 is negative the shift is to the right with sign extension The inputs must be integers Ishift LSHIFT numi num2 outputs numl logical shifted to the left by num2 bits If num2 is negative the shift is to the right with zero fill The inputs must be integers Chapter 5 Logical Operations 5 Logical Operations and AND tf1 tf2 AND tf1 tf2 tf3 outputs TRUE if all inputs are TRUE otherwise FALSE All inputs must be TRUE or FALSE Comparison is case insensitive regardless of the value of CASEIGNOREDP That is true or True or TRUE are all the same An input can be a list in which case it is taken as an expression to run that expression must produce a TRUE or FALSE value List expressions are evaluated from left to right as soon as a FALSE value is found the remaining inputs are not examined Example MAKE RESULT AND NOT X 0 1 X gt 5 to avoid the division by zero if the first part is false See CASEIGNOREDP page 89 or OR tf1 tf2 OR tf1 tf2 tf3 outputs TRUE if any input is TRUE otherwise FALSE All inputs must be TRUE or FALSE Comparison is case insensitive regardless of the value of CASEIGNOREDP That is true or True or TRUE are all the same An input can be a list in which case it is taken as an express
26. primitive name is represented as a D in the filename there are no files for question marks because the HELP command looks for the file named after the corresponding primitive that ends in P INDEX INDEX is a hui et ht SS Load e a ook Slit 29 Fig Sateen A e ia es 29 ION 29 defmacro rs eo 83 ori e a aad eles 15 MATO o an 83 maybeoutput 2 eee eee eee eee 71 SODA A ea 13 Seti ici dei 13 A NAS 13 BOUSERMENUSIZE naci den pana wrens eval 65 Sf stare Oe Ste er ethane ape atlas d ca tea dS 29 lt Oo nod bia ee aia oh ed tala Rad ee et 32 Sii bP bee leee ods hee Bhd eee 32 Ski a ean Aoi 15 ER IO 14 gt De ight Mem oes i ths Senate RO Banna A 32 Dye Hage eau as e ae nd Wine Bocas we eee 32 6 A E IE 72 A o E 23 alloWwgetsetooocosicior corsa as Piel 89 AllowGetSet renier cece cence eee eee eee eee 4 Mt eel ded Hone A dd 35 APPLY eid aie ale cee di ly edad ea aie wes 76 AC a ado ta coa EE Sii 39 MY A A Soe eee 55 BUT OY ocx ca AA EN ADE 9 Array o rae E a ane aves Daas RE 14 array DP iki e nS ngeaa thei ube RE EEA 14 arraytolistsnun siine eh ed ee 10 ASCH 24 Ra RS he Poe ae te Ses em 16 ashifte 4 23 ck A Bee ee 34 B IDC Ke eee rte ate Mem mea Sy NE ee eee cae avec 37 background caia a sete 46 Before sc oes ce eas We ee ne a ge Peale Fae 15 Delorean as 15 DE o ara Mitten o dad adela 11 Di A A ate tt 11 DE a e ant SESS e de 46 E A E 33 A A 34 DO A idas 33 DI Co athe eh eo eee y bee 33 Di a
27. small block of computer memory as used by Logo Each number uses one node Each non numeric word uses one node plus some non node memory for the characters in the word Each array takes one node plus some non node memory as well as the memory required by its elements Each list requires one node per element as well as the memory within the elements If you want to track the memory use of an algorithm it is best if you invoke GC at the beginning of each iteration since otherwise the maximum will include storage that is unused but not yet collected 7 6 Workspace Inspection po PRINTOUT contentslist PO contentslist command Prints to the write stream the definitions of all procedures variables and prop erty lists named in the input contents list poall POALL library procedure command Prints all unburied definitions in the workspace Abbreviates PO CONTENTS See CONTENTS page 54 pops POPS library procedure command Prints the definitions of all unburied procedures in the workspace Abbreviates PO PROCEDURES See PO page 56 PROCEDURES page 55 pons PONS library procedure command Prints the definitions of all unburied variables in the workspace Abbreviates PO NAMES See PO page 56 NAMES page 55 Chapter 7 Workspace Management 97 popls POPLS library procedure command Prints the contents of all unburied nonempty property lists in the workspace Abbreviates PO PLISTS See
28. that it will accept if its invocation is not enclosed in parentheses is ordinarily equal to the minimum number If you want a different default number you can indicate that by putting the desired default number as the last thing on the TO line example to proc ini in2 foo in3 3 This procedure has a minimum of one input a default of three inputs and an infinite maximum Logo responds to the TO command by entering procedure definition mode The prompt character changes from to gt and whatever instructions you type become part of the definition until you type a line containing only the word END define DEFINE procname text command Defines a procedure with name procname and text text If there is already a procedure with the same name the new definition replaces the old one The text input must be a list whose members are lists The first member is a list of inputs it looks like a TO line but without the word TO without the procedure name and without the colons before input names In other words the members of this first sublist are words for the names of required inputs and lists for the names of optional or rest inputs T he remaining sublists of the text input make up the body of the procedure with one sublist for each instruction line Chapter 7 Workspace Management ol of the body There is no END line in the text input It is an error to redefine a primitive procedure unless the variable REDEFP has the value TRUE
29. the depth limit are indicated by an ellipsis for each one so a too deep list of two members will print as If there is a variable named PRINTWIDTHLIMIT with a nonnegative integer value then only the first so many members of any array or list will be printed A single ellipsis replaces all missing data within the structure The width limit also applies to the number of characters printed in a word except that a PRINTWIDTHLIMIT between 0 and 9 will be treated as if it were 10 when applied to words This limit applies not only to the top level printed datum but to any substructures within it See PRINTDEPTHLIMIT page 90 PRINTWIDTHLIMIT page 90 If there is a variable named FULLPRINTP whose value is TRUE then words that were created using backslash or vertical bar to include characters that would otherwise not be treated as part of a word are printed with the backslashes or vertical bars shown so that the printed result could be re read by Logo to produce the same value If FULLPRINTP is TRUE then the empty word however it was created prints as Otherwise it prints as nothing at all See FULLPRINTP page 90 print PRINT thing PR thing PRINT thing1 thing2 PR thingl thing2 command Prints the input or inputs to the current write stream initially the screen All the inputs are printed on a single line separated by spaces ending with a newline If an input is a list square brackets are not printed a
30. thing2 FALSE otherwise See EQUALP page 14 numberp NUMBERP thing NUMBER thing outputs TRUE if the input is a number FALSE otherwise vbarredp VBARREDP char VBARRED char BACKSLASHEDP char library procedure BACKSLASHED char library procedure outputs TRUE if the input character was originally entered into Logo within vertical bars to prevent its usual special syntactic meaning FALSE otherwise Outputs TRUE only if the character is a backslashed space tab newline or one of lt gt 7 The names BACKSLASHEDP and BACKSLASHED are included in the Logo library for backward compatibility with the former names of this primitive although it does not output TRUE for characters originally entered with backslashes 2 5 Queries count COUNT thing outputs the number of characters in the input if the input is a word outputs the number of members in the input if it is a list or an array For an array this may or may not be the index of the last member depending on the array s origin ascil ASCII char outputs the integer between 0 and 255 that represents the input character in the ASCII code Interprets control characters as representing vbarred punctuation and returns the character code for the corresponding punctuation character without vertical bars Compare RAWASCIT rawascil RAWASCIT char Chapter 2 Data Structure Primitives 17 outputs the integer between 0 and 255 that rep
31. ued AG wa ee ee ee ia ERE ee eee ee 10 GENSYN cic ced og erg cage A AO 10 222 Data Selectors woh lt EMS Sth ba 10 e ar Ah a a Beg ri Are RNs thas dee 10 A A A Ganlee gee stead 11 VAS hee andesite E O 11 DULCE e Re 11 DULCES A e ue ea Alo 11 p tlaste reer nre ri ed di aa aime O 12 A e de e e de e att 2 Me a a a ne 12 MARE A A A et er 12 Pia ds ados 12 PEMOVE 2 fen oer iis AS A id 12 E eb 12 QUO tC ess ina ie ee AA tica 12 203 Data Mutatols an i or as eee aes 12 Seed a o hse Oy ele tae tate es ts AN tn ed he 12 ING SOULE A io aX trae a heath A Me ia Bog ME co tee 13 A Ot chet Poe te ten O 13 SOU Die cee tea Dien cate en eN E ene aC 13 AAA As 13 PUSO o door 13 POP A es bee a A ate tere oes 13 QUEUE seats ote See eet A ete Ghee 14 111 BERKELEY LOGO 6 0 QA A PEGICALES A hack A eau nd ide See hoe eet ha ann teat 14 WO dea ee AAA Se Bees a aa a st ana a a 14 Lis tps tke Spoke a A a acu ada 14 AIT OY Pix ite aman A A aba ani Beale 14 CMPlY Par AS eat tne eee eae 14 eqilalp sctcg2eb dade he ts 14 notequal py acess ld feds We en oes Peed hoa cae eine 15 DETER ee eon seein heave a haais se ee tate said Aes ds 15 lA a E A A ante stad Gas Pa ae 15 memberp Avid Hokt A ion 15 SUBSP a dci 16 DUMPED imeno sence E A ee aed Recker eka 16 UDIP A ween ene Ban eS 16 2 5 Quevies iene a tds 16 COUT cfc assests Ss ses a teed Shae oie ec na eee ea dt S in 16 ASC AA BT ERS POLE Ades oe 16 PA WOSCU isa ceed soe Sas a Saeco Suni ta Rode
32. unless it is preceded by a space and followed by a nonspace See also MINUS minus MINUS num num outputs the negative of its input Minus sign means unary minus if the previous token is an infix operator or open parenthesis or it is preceded by a space and followed by a nonspace There is a difference in binding strength between the two forms MINUS 3 4 means 3 4 3 4 means 3 4 product PRODUCT numi num2 PRODUCT numi num2 num3 numi num2 outputs the product of its inputs quotient QUOTIENT numi num2 QUOTIENT num numi num2 outputs the quotient of its inputs The quotient of two integers is an integer if and only if the dividend is a multiple of the divisor In other words QUOTIENT 5 2 is 2 5 not 2 but QUOTIENT 4 2 is 2 not 2 0 it does the right thing With a single input QUOTIENT outputs the reciprocal of the input BERKELEY LOGO 6 0 remainder REMAINDER numi num2 outputs the remainder on dividing num1 by num2 both must be integers and the result is an integer with the same sign as numl modulo MODULO numi num2 outputs the remainder on dividing num1 by num2 both must be integers and the result is an integer with the same sign as num2 int INT num outputs its input with fractional part removed i e an integer with the same sign as the input whose absolute value is the largest integer less than or equal to the absolute value of the input round ROUND num outputs the n
33. word is the name of a property list if you haven t put any properties in it PLIST of that name outputs an empty list rather than giving an error message 7 5 Workspace Queries Note All procedures whose input is indicated as contentslist will accept a single word taken as a procedure name a list of words taken as names of procedures or a list of three lists as described under the CONTENTS command above contents CONTENTS outputs a contents list i e a list of three lists containing names of defined procedures variables and property lists respectively This list includes all unburied named items in the workspace buried BURIED outputs a contents list including all buried named items in the workspace traced TRACED outputs a contents list including all traced named items in the workspace stepped STEPPED Chapter 7 Workspace Management 99 outputs a contents list including all stepped named items in the workspace procedures PROCEDURES outputs a list of the names of all unburied user defined procedures in the workspace Note that this is a list of names not a contents list However procedures that require a contents list as input will accept this list primitives PRIMITIVES outputs a list of the names of all primitive procedures in the workspace Note that this is a list of names not a contents list However procedures that require a contents list as input will accept this list names NA
34. 0 A A a athe Maer EA 30 Vite kere se ne panne cede cnt na a etek ate raked A 30 SIN eee da ad bei A ie edie ee ee 31 La da ne eh elas tha 31 COS Sai hi O RN 31 TAC COS sr senate a ad de tt o Fe ON el Sd de 31 LEA A A ode et ee Pe daa oa oaks 31 tadarctamta tt de dt rat thst To el Role 31 vi BERKELEY LOGO 6 0 ESOC ie e A na Wie cabana thee Seed wala a E CEEA E aves EE 31 4 2 Numeric Predicates 0 0 0 ccc ccc cece eee e never A 32 A E O RENO etn CE 32 TOR PP id AA E AA AA a S 32 l ssequial Dit A AR A eae AS 32 PLEAtErEGUAlP seis a As 32 4 3 Random Numbers 00 0 cece ccc eee cc cee eect e eee eees 32 A Se ihe URE ABR eee a 32 TEPANG OM td lei cda 33 4A Print Formatting a a a bette ees 33 MA tt lashes os tole ab Rn 33 415 Bitwise Operational 33 DIA od e a a N AN A 33 DL A id oA cine 33 DUI A A ta 33 DIME tit tanda ed a rd 34 A aio 34 A A ue Oeraceere E 34 Logical Operations 0 0 cee eee 35 ULL et ogee TR ANO 35 A ee A 35 DO A e acts at 35 GRADINICS soso ane eet hers eee dee ee oy 37 61 Turtles Motion a Witte aot totais 37 A 8 cestode ath led genaitan tare a bee hceed tai 37 Darkest dato aorta ll aA Menea 37 A eat ene ree E pies Dd lr fe de LEA 38 O Gy Barca tt ect os 38 O RR 38 A A SOA Rees Le A e Dat t E 38 O O 38 SO o A A a SRN 38 sebheadin tas lid sta da a ie ii 38 A E i ted 38 A o hoe eee 39 6 2 Turtle Motion Queries 0 cece eee eens 39 POO ere eR O a A A NE he
35. 0 lO dit heer aca EEES 46 Lacio da 52 localmake mia aa eek Ree ES 52 Loria a A Hyncta bake 30 logohelpiia aa 63 logoplatform cita dr rte 91 lOgOVErsiOn ier onsi ii 91 lowercase Sica a es 17 A RO 9 A A a SAN 34 A A ad da 38 MAC A a e thei 85 MACTOEX PAN iaa Et 85 IMACTOP S22 minita AE Patines gas 85 MA aa 51 MP a A a Paced 77 O NRO 77 ICAP AY io 10 mdite tas O 12 MASetit eM Sees A Rs 13 o O 17 member da adn 15 MINUS A A EA ek wea aen 29 MOdU dO comia ae ea nisu Sines omees 30 IMOUSEDOS sy whe AA 47 AM a o ld AA 51 NAME ai a LE ENES EEEREN 54 NAMeliSt see scces heeded ad tei eae ee i 55 NAMED pois Sess ete Na eee A he 54 NAMES hs het e dada dedi ttentde vad nieces 55 DOES oia Sedge tad A eo hi a ee Seay ed dee oda 56 nodribbles lt 426 aida idos 24 HOretresi ia Fe oe hs 42 NOt Se aoee AAA Crete thks aon 35 notequal 2 oia 15 NoOtequalp osics03 sage viele bee A 15 MUI EE aa Grad Sela eau she ER bia cela ais oe gen Ie 16 N M Pin rl ea 16 OP dd io 69 openappend 0 cece rr 23 OPenread s oreo dres aae e a eas ces nee 22 OPCNUP Caters ocavwes iaa np wastes sae Sy 23 OPENWIIGE iste hades wet WA at ee ate es 22 an a id a A adders 35 OULPUt A e AA E 69 palettes os coe ansia ro eae ees 46 RO 18 Pals iia o 70 POR ntrear dra a Pee keeles 45 EN 43 PE E he ge 44 DEM A Meh ed ae ae 46 PenCOlOT ati rta tease 45 NS SiR 43 pendown i32 4 tase eebaavdh seated Shae wea as 45 PEA WD tia 45 PENECLA
36. 2 find FIND tftemplate data library procedure outputs the first constituent of the data input the first member of a list or the first character of a word for which the value produced by evaluating the template with that consituent in its slot is TRUE If there is no such constituent the empty list is output In a template the symbol REST represents the portion of the data input to the right of the member currently being used as the slot filler That is if the data input is AB C D El and the template is being evaluated with replaced by B then REST would be replaced by C D E In a template the symbol represents the position in the data input of the member currently being used as the slot filler That is if the data input is A B C D E and the template is being evaluated with replaced by B then would be replaced by 2 reduce REDUCE template data library procedure outputs the result of applying the template to accumulate the members of the data input The template must be a two slot function Typically it is an associative function name like SUM If the data input has only one constituent member in a list or character in a word the output is that consituent Otherwise the template is first applied with 1 filled with the next to last consitient and 2 with the last constituent Then if there are more Chapter 8 Control Structures constituents the template is applied with 1 filled with the next constituen
37. BERKELEY LOGO 6 0 Berkeley Logo User Manual Brian Harvey Short Contents l sree itis e IS A enh A a 1 2 Data Struct re PODES yr are 9 Si COMMON a a Sah ras wana hee 19 A APMC Ciena a tei en She wks a ble nar E RS dae a RS 29 5 Logical Operations ssn tue ie Das dhe hee ee i te 30 O CGraphices snes ts tl Soe Shed Be eee a 37 7 Workspace Management sus sed Med ad Ga stag dee pose ee 49 Or GCo trolStr ct res find ceee ie warded aun Ba antes twa ot 67 9 Macri ii Bae tiene Pies eed deltas Od Weare ited aa 83 A Error Processing ir ar aus 1 ede alee Waa Saab onahane ufos 87 TI Special Variables tse eto ees See eae one te 89 T2 Trternationalization ot dale eet eer eae ie 93 Table of Contents 1 INE ORUCHON ys sida eS Ss 1 TT Overview ance Seeks als aia 1 1 2 Getter Setter Variable Syntax oe 2 1 3 Entering and Leaving Logo 0 0 c cece eee 5 A Tokenizati Nadr Ia 6 Data Structure Primitives 9 PR AN eile Ok ak ie E ete betae ote glee as 9 WOE GIG tha Seite inh Sen eh Sah ete ak wt Ue hn Oana aR cen til Meh a ag 9 DiS tis ee i A AA en oe ee eA ee iene ee 9 A A Bas des 9 fptite cues sate A oh ee be ee ee 9 TU chee a Seats ghee A ti et ceanatiett Dea gate ea SS ele oo ae 9 MLNV A bls Reape axe a So a Re scan Duss yaar de eg oes 9 TA GALT AY tc AE os tated 10 listtOarray aera iT haven EN 10 arraytolist iacninchedlestted idad are 10 COM E DS a A e ai te 10 TEVETSE 405 0
38. ED command If invoked with an input EDIT writes the definitions of the named items into a temporary file and edits that file using an editor that depends on the platform you re using In wxWidgets and in the MacOS Classic version there is an editor built into Logo In the non wxWidgets versions for Unix MacOS X Windows and DOS Logo uses your favorite editor as determined by the EDITOR environment variable If you don t have an EDITOR variable edits the definitions using jove If invoked without an input EDIT edits the same file left over from a previous EDIT or EDITFILE instruction When you leave the editor Logo reads the revised definitions and modifies the workspace accordingly It is not an error if the input includes names for which there is no previous definition If there is a variable LOADNOISILY whose value is TRUE then after leaving the editor TO commands in the temporary file print procname defined where procname is the name of the procedure being defined if LOADNOISILY is FALSE or undefined TO commands in the file are carried out silently If there is an environment variable called TEMP then Logo uses its value as the directory in which to write the temporary file used for editing Exceptionally the EDIT command can be used without its default input and without paren theses provided that nothing follows it on the instruction line See LOADNOISILY page 90 See EDITFILE page 61 editfile EDITFI
39. El and the template is being evaluated with replaced by B then REST would be replaced by C DE If multiple parallel slots are used then REST 1 goes with 1 etc BERKELEY LOGO 6 0 In a template the symbol represents the position in the data input of the member currently being used as the slot filler That is if the data input is A BC D El and the template is being evaluated with replaced by B then would be replaced by 2 See SENTENCE page 9 filter FILTER tftemplate data library procedure outputs a word or list depending on the type of the data input containing a subset of the members for a list or characters for a word of the input The template is evaluated once for each member or character of the data and it must produce a TRUE or FALSE value If the value is TRUE then the corresponding input constituent is included in the output print filter vowelp elephant eea In a template the symbol REST represents the portion of the data input to the right of the member currently being used as the slot filler That is if the data input is AB C D El and the template is being evaluated with replaced by B then REST would be replaced by C D E In a template the symbol represents the position in the data input of the member currently being used as the slot filler That is if the data input is A B C D E and the template is being evaluated with replaced by B then would be replaced by
40. FALSE if the inputs are equal TRUE otherwise See EQUALP for the meaning of equality for different data types beforep BEFOREP wordi word2 BEFORE wordi word2 outputs TRUE if word1 comes before word2 in ASCII collating sequence for words of letters in alphabetical order Case sensitivity is determined by the value of CASEIGNOREDP Note that if the inputs are numbers the result may not be the same as with LESSP for example BEFOREP 3 12 is false because 3 collates after 1 See CASEIGNOREDP page 89 LESSP page 32 eq EQ thing thing2 outputs TRUE if its two inputs are the same datum so that applying a mutator to one will change the other as well Outputs FALSE otherwise even if the inputs are equal in value WARNING Primitives whose names start with a period are dangerous Their use by non experts is not recommended The use of mutators can lead to circular data structures infinite loops or Logo crashes memberp MEMBERP thing1 thing2 MEMBER thing1 thing2 if thing2 is a list or an array outputs TRUE if thing is EQUALP to a member of thing2 FALSE otherwise If thing2 is a word outputs TRUE if thing is a one character word EQUALP to a character of thing2 FALSE otherwise See EQUALP page 14 16 BERKELEY LOGO 6 0 substringp SUBSTRINGP thing1 thing2 SUBSTRING thing1 thing2 if thingl or thing2 is a list or an array outputs FALSE If thing2 is a word outputs TRUE if thing is EQUALP to a substring of
41. FILL page 41 See PENERASE page 44 See PENREVERSE page 44 6 8 Mouse Queries mousepos MOUSEPOS outputs the coordinates of the mouse provided that it s within the graphics window in turtle coordinates If the mouse is outside the graphics window then the last position within the window is returned Exception If a mouse button is pressed within the graphics window and held while the mouse is dragged outside the window the mouse s position is returned as if the window were big enough to include it clickpos CLICKPOS outputs the coordinates that the mouse was at when a mouse button was most recently pushed provided that that position was within the graphics window in turtle coordinates wxWidgets only buttonp BUTTONP BUTTON outputs TRUE if a mouse button is down and the mouse is over the graphics window Once the button is down BUTTONP remains true until the button is released even if the mouse is dragged out of the graphics window button BUTTON outputs 0 if no mouse button has been pushed inside the Logo window since the last call to BUTTON Otherwise it outputs an integer between 1 and 3 indicating which button was most recently pressed Ordinarily 1 means left 2 means right and 3 means center but operating systems may reconfigure these Chapter 7 Workspace Management 7 Workspace Management 7 1 Procedure Definition to TO procname inputi input2 special form command Prepares Log
42. LE filename command Starts the Logo editor like EDIT but instead of editing a temporary file it edits the file specified by the input When you leave the editor Logo reads the revised file as for EDIT EDITFILE also remembers the filename so that a subsequent EDIT command with no input will re edit the same file EDITFILE is intended as an alternative to LOAD and SAVE You can maintain a workspace file yourself controlling the order in which definitions appear maintaining comments in the file and so on 62 BERKELEY LOGO 6 0 In the wx Widgets version EDITFILE asks whether or not you want to load the file into Logo when you finish editing This allows you to use EDITFILE to edit data files without leaving Logo edall EDALL library procedure command Abbreviates EDIT CONTENTS See CONTENTS page 54 edps EDPS library procedure command Abbreviates EDIT PROCEDURES See EDIT page 61 PROCEDURES page 55 edns EDNS library procedure command Abbreviates EDIT NAMES See EDIT page 61 NAMES page 55 edpls EDPLS library procedure command Abbreviates EDIT PLISTS See EDIT page 61 PLISTS page 55 edn EDN varname library procedure EDN varnamelist command Abbreviates EDIT NAMELIST varname list See EDIT page 61 NAMELIST page 55 edpl EDPL plname library procedure EDPL plnamelist command Abbreviates EDIT PLLIST plname list See EDIT page 61 PLLIST page 55
43. MES outputs a contents list consisting of an empty list indicating no procedure names followed by a list of all unburied variable names in the workspace plists PLISTS outputs a contents list consisting of two empty lists indicating no procedures or variables followed by a list of all unburied nonempty property lists in the workspace namelist NAMELIST varname library procedure NAMELIST varnamelist outputs a contents list consisting of an empty list followed by a list of the name or names given as input This is useful in conjunction with workspace control procedures that require a contents list as input pllist PLLIST plname library procedure PLLIST plnamelist outputs a contents list consisting of two empty lists followed by a list of the name or names given as input This is useful in conjunction with workspace control procedures that require a contents list as input See CONTENTS page 54 arity ARITY procedurename 96 BERKELEY LOGO 6 0 outputs a list of three numbers the minimum default and maximum number of inputs for the procedure whose name is the input It is an error if there is no such procedure A maximum of 1 means that the number of inputs is unlimited nodes NODES outputs a list of two numbers The first represents the number of nodes of memory currently in use The second shows the maximum number of nodes that have been in use at any time since the last invocation of NODES A node is a
44. MY REPEAT will output the instruction list print hello my repeat 4 print hello Logo then executes these instructions in place of the original invocation of MY REPEAT this prints hello once and invokes another repetition The technique just shown although fairly easy to understand has the defect of slowness because each repetition has to construct an instruction list for evaluation Another ap proach is to make MY REPEAT a macro that works just like the non macro version unless the instructions to be repeated include OUTPUT or STOP macro my repeat num instructions catch repeat catchtag Lop repeat done runresult repeati num instructions op end to repeati num instructions if num 0 throw repeat catchtag run instructions maybeoutput repeati num 1 instructions end to repeat done repeat result if emptyp repeat result op stop op list output quoted first repeat result end If the instructions do not include STOP or OUTPUT then REPEAT1 will reach its base case and invoke THROW As a result MY REPEAT s last instruction line will output an empty list so the evaluation of the macro result by the caller will do nothing But if a STOP or OUTPUT happens then REPEAT DONE will output a STOP or OUTPUT instruction that will be executed in the caller s context The macro defining commands have names starting with a dot because macros are an advanced feature of Logo it s easy to get in trouble by def
45. NDULY ii a ones 59 Wn bur yall A A ea ie O Lae nea 59 UNDUL NAME a ea ee page ba ene 59 IDULICE Pi ich aches tea a era aces ita aries adit ea Oath heave wath tet d 60 TE ACC Sk soe AA LS ee ee 60 UDCA rr A toate ala SAR AA exerts 60 AC Ptas rt a A 60 MEP al ir 60 is EN asc a face Seeds Aha ate Sia 60 stepped Di A ene ea ee 61 ly A eines hd aaa eee atts BP he 61 Cdithiles a a ek tals De oh lead aie tate te 61 dalla td eae be ee ae 62 CAPS ria buenas bere daa 62 COS rr e data bad 62 Ol LAA AA eae als 62 ad A isa 62 Cll A ec 62 a a e o e 62 SaVEl it a a aan 63 o srg ie bate Gate leh ois bea ule a hig Pleas d 63 Cslsload s ie A is oaks 63 help waidai li a cee tA eae ea eee ee a EE R 63 SCLECIUGE wt B ene ed ee Ache aa 64 Seth blOC ata di ea 64 setcslslo iii A ddr 64 sethelplociar aia A aia oes 64 SETE A A 64 a rd A ES EEEE naka 64 EE MENOS E Da 65 x BERKELEY LOGO 6 0 8 Control Structures o oooooocmo o 67 SL Contro lne O25 RES Soe a Beate 67 TUS RA SA ot a IA A Ak nc 67 TUNE te da eth eth Meee bas 67 TOPCAU ein gabe bein teens eas eta Sees Re ee bees Se sates 67 LOPE VER Side heehee A Pe Ue Se BS Be a E 67 TEP COUN E eh we A ae AA a ito 68 A a ia OR VAG eh o eS A a les Ge 68 7 2 b A A bla rs 68 DA LA AA A ee A Ce eee a 68 TAG ULC see tole Ne E E Stee a tes SAD eee 68 Mal SG irae oe eee E O 68 STOP Sen E Aee 69 OU PUE ia a a ea a a a Ree a 69 catch ELR E E AE E NAAA E EE e aca da S o ld ar 69 CTO a
46. OS Classic between the prefix and the filename entered by the user The input to SETPREFIX must be a word unless it is the empty list to indicate that there should be no prefix See OPENREAD page 22 See OPENWRITE page 22 See OPENAPPEND page 23 See OPENUPDATE page 23 See LOAD page 63 See SAVE page 62 prefix PREFIX outputs the current file prefix or if there is no prefix See SETPREFIX page 22 openread OPENREAD filename command Opens the named file for reading The read position is initially at the beginning of the file openwrite OPENWRITE filename command Opens the named file for writing If the file already existed the old version is deleted and a new empty file created OPENWRITE but not the other OPEN variants will accept as input a two element list in which the first element must be a variable name and the second must be a positive integer A character buffer of the specified size will be created When a SETWRITE is done with this same list in the sense of EQ not a copy so you must do something like make buf foo 100 openwrite buf setwrite buf Eso close buf Chapter 3 Communication 23 and not just openwrite foo 100 setwrite foo 100 and so on the printed characters are stored in the buffer when a CLOSE is done with the same list as input the characters from the buffer treated as one long word even if spaces and newlines are inclu
47. PAL EAA 16 CHAT eo sos sents A O Seber 17 members tati lie Wy at ee 17 lower SE a eh a a a a ah han a Non ee E 17 UPPT Case AA eee An ie ed A E E 17 STATIC outs A andthe seed teehee aa 17 PALSC 24a sas SERRA SSS ae tat te A oer Mes Ment hd St ee Seah 18 TUN PALSer cate irane e r ie pe ee oe had tee leas 18 3 COMMUNICATION lisis tala 19 A A Kena br cake aes teil Jae ees ey ae 19 PEG settee Be Se SU eT a A ok eee Seas 19 PEA dE trad a We anna wate eget 19 SHOW cio ile acest ci are asennad oi atest ad te feed scot Gwe ENE eyed 20 iD RECEIVETS ah iNece EEN OR tl es 20 TALIS Het ce set a a Rite ls A bd 20 TOA di dvs open aoe chee Ser Pedant Sacer eden ted vane BAR dos Be 20 readr wli nessen as oc a a codec eee 20 read char Missed ne ad toate er gt ae hae te A a oe 21 TEA Chars Gas see Nose ot eee Ret dad I ed 21 SHS rags aces ai ote E E A EAE T 21 323 Eile ACCESS ti betes bled es Si a esas eh el Acetone 22 O i aak net Neve Sh teen ee ena pene gy OSS 22 A ute Pelee det ee Salle been deals 22 OPCHleAd iri rios inde eh tyes Maas 22 OPE WILE Sareea ee eae A aie ei See ee nt A Gael ty 22 Opehappends cscs pease gan Gd ee Sates 23 Openpdaterccci ti ced a solider Week 23 CA e eke A NS e de Uta AOU ih St EM BE A g 23 AOp Eies ae settee Owe a adap Bethe Pare E ES 23 CLOSE AN es sg doe A A eT At lade oleic ot aie MAb oath tes 23 CLASCHIE ice A attest Peleg hs oat eat OO accion Sn es 23 rib bles Lies oe as ce ee atonal O ai Se 24 NOGTID b
48. PO page 56 PLISTS page 55 pon PON varname library procedure PON varnamelist command Prints the definitions of the named variable s Abbreviates PO NAMELIST varname list See PO page 56 NAMELIST page 55 popl POPL plname library procedure POPL plnamelist command Prints the definitions of the named property list s Abbreviates PO PLLIST plname list See PO page 56 PLLIST page 55 pot POT contentslist command Prints the title lines of the named procedures and the definitions of the named variables and property lists For property lists the entire list is shown on one line instead of as a series of PPROP instructions as in PO See PPROP page 53 PO page 56 pots POTS library procedure command Prints the title lines of all unburied procedures in the workspace Abbreviates POT PROCEDURES See PROCEDURES page 55 7 7 Workspace Control erase ERASE contentslist ER contentslist 58 BERKELEY LOGO 6 0 command Erases from the workspace the procedures variables and property lists named in the input Primitive procedures may not be erased unless the variable REDEFP has the value TRUE See REDEFP page 91 erall ERALL command Erases all unburied procedures variables and property lists from the workspace Abbreviates ERASE CONTENTS See CONTENTS page 54 erps ERPS command Erases all unburied procedures from the workspace Abbreviates ERASE P
49. ROCEDURES See ERASE page 57 PROCEDURES page 55 erns ERNS command Erases all unburied variables from the workspace Abbreviates ERASE NAMES See ERASE page 57 NAMES page 55 erpls ERPLS command Erases all unburied property lists from the workspace Abbreviates ERASE PLISTS See ERASE page 57 PLISTS page 55 ern ERN varname library procedure ERN varnamelist command Erases from the workspace the variable s named in the input Abbreviates ERASE NAMELIST varname list See ERASE page 57 NAMELIST page 55 erpl ERPL plname library procedure ERPL plnamelist command Erases from the workspace the property list s named in the input Abbreviates ERASE PLLIST plname list Chapter 7 Workspace Management 99 See ERASE page 57 PLLIST page 55 bury BURY contentslist command Buries the procedures variables and property lists named in the input A buried item is not included in the lists output by CONTENTS PROCEDURES VARIABLES and PLISTS but is included in the list output by BURIED By implication buried things are not printed by POALL or saved by SAVE See CONTENTS page 54 PROCEDURES page 55 PONS page 56 PLISTS page 55 POALL page 56 SAVE page 62 buryall BURYALL library procedure command Abbreviates BURY CONTENTS See CONTENTS page 54 buryname BURYNAME varname library procedure BURYNAME varnamelist command Abbrevi
50. SE nnne aha u a ads 44 PCNMOdES ss 2 5 cake re e ies 45 PEPA du Heskett hens tad eae ee oe 44 PEN Patterns losa bie Lees 46 PCNLEVETSE sie et ee sed HAE Ca se Mea ee 44 POCNSIZE si SE ahead cnet e cakes hous 46 PENUD hal Resides eee So Sb eat et 43 Pickin ir Bese de ike tees ele aa aa 12 Plis bieron KM peed brida 53 Plistl Five csc Gee NA 54 PUSt P22 soit eerie ts kate ea ie kee 54 A ena E E alien ieeaid af weet one ns 55 Plist sssi perir sas ant peewee tte E ba 55 PO Be lee OR a r ae oe 56 Pl a 56 100 POD oc desea UGS we MER a ee eats pales 57 PONS rats a tera dd a 8 56 DOP Ween li o A ee Oat 13 POP s aceon eh eee nets oe Riles bees 57 POP See wa ed AE are ek eA See i 57 POPS ia a Cates 56 DOS Sic di Goan EE were ee Tae Oe tios 39 PO aoa ess EA 57 POU 3 i wide is Leave EEE MNE O ASE N EAE 57 POWELL aa ES AEE E 30 PPP losa wba a hae MER a eRe bared 53 PP liste we A fetes hon ea 44 DPE heatoit tie tee aio 19 pier ssn bane a Pa ee eee 22 primitive callao os dei an e 53 primitivep lt vsdoee beh eee eek Re 53 primitive ie be ride 55 PENG ices ea eee Die ie 19 printdepthlimit 0 2c eee eee 90 printout ratene oig a a ee Ee REA 56 printwidthlimit seeria ne eee eee 90 Procede dee 53 Procedure errre ine tlalpan 53 procedures ir senii a ias cenit Eaa Ear aiaa 55 producti aeran ear is 4 29 PUSO a A aa Ag eed 43 PUSH weeks lr ains 13 PR AA A Sd oa 44 Q QUEUE acia a add 14 quoted 3 24 ds 12 q otient adst p
51. So re hs a e aa See ete A r a aed oe eds 69 MIA TEA AAA seve ee 70 PAUSA A A A AA A es 70 COMIDAS A AA a 70 A ee hot OA ash high hea a ee es 71 Dyes state eases dd e as 71 May beoutput 2ccceiskewe dae Resin Aaa 71 BOO scr a seater ieee he epee ae Sate Ruane pasa dedica 71 A 72 LOOP Ad A ds 72 EE South cok es chars Loca essa ate nike lake nisin ce tain Weasel ET 72 o od apne ue Aces anette ares Ren OA aKa Ia 72 CLO WES eso bie te tetas tak Dd E debio cena os ala nt Us ih ot hae de 73 WHE 2 dss Steet eet oy eee ee A ted OE Le e a Ns tee 73 doant serer GA eyed Be ate ee ahd eon Dace eee eRe Bee ge ea 73 a Ree eect E cee ala tee Sag aul do booed 73 CAS Cr A BOS dca BEES ee I REA hr ABA OE BE EE EE 74 CONG esheets A dake athe aes Sra 74 8 2 Template based Iteration 0 74 ADDLY aac geeks adas 76 INVOKE Lit tints Pete Grated bbe etn Ai 76 foreach Luan tad di ane wile Lerdo 76 MAD A a AA A id tad 77 Map SCe E E eee A bee ae od 77 TIGER ce Sst cee Peta O heer a a a a eed eae 78 A oy agate he es ll sate LO Ave OD fade E lh he TA Des E S 78 TOGU CO vec an aaa ond oe ea Rae ee 78 CLOSSMAP ntsc saa aa E cee eG ada ee ene ais 79 CACA Wes Arn Gerta Teeth A o dt 79 Cascade 2 Acs occa no des yee ied Meas Ere onan 81 E ae aes 81 9 INIBCLOS 45 SS ahah eet 83 IMACTO es iste nn e Goma A A das 83 ACM Omics ace eae iw hea ete eh eee he ae eas 85 MLA CL OP Di di A Ai E 85 Machoexpand ia o a oR ake ye nea SYS 85 10 Error Processing
52. TRACE contentslist command Turns off tracing for the named items tracedp TRACEDP contentslist TRACED contentslist outputs TRUE if the first procedure variable or property list named in the contents list is traced FALSE if not Only the first thing in the list is tested the most common use will be with a word as input naming a procedure but a contents list is allowed so that you can TRACEDP variable or TRACEDP proplist step STEP contentslist command Marks the named items for stepping Whenever a stepped procedure is invoked each instruction line in the procedure body is printed before being executed and Logo waits for the user to type a newline at the terminal A message is printed whenever a stepped variable name is shadowed because a local variable of the same name is created either as a procedure input or by the LOCAL command See LOCAL page 52 unstep UNSTEP contentslist command Turns off stepping for the named items Chapter 7 Workspace Management 61 steppedp STEPPEDP contentslist STEPPED contentslist outputs TRUE if the first procedure variable or property list named in the contents list is stepped FALSE if not Only the first thing in the list is tested the most common use will be with a word as input naming a procedure but a contents list is allowed so that you can STEPPEDP variable or STEPPEDP proplist edit EDIT contentslist ED contentslist EDIT
53. ad CSLSLOAD name command Loads the named file like LOAD but from the directory containing the Computer Science Logo Style programs instead of the current user s directory See LOAD page 63 help HELP name HELP command Prints information from the reference manual about the primitive procedure named by the input With no input lists all the primitives about which help is available If there is an environment variable LOGOHELP then its value is taken as the directory in which to look for help files instead of the default help directory BERKELEY LOGO 6 0 If HELP is called with the name of a defined procedure for which there is no help file it will print the title line of the procedure followed by lines from the procedure body that start with semicolon stopping when a non semicolon line is seen Exceptionally the HELP command can be used without its default input and without paren theses provided that nothing follows it on the instruction line seteditor SETEDITOR path command Tells Logo to use the specified program as its editor instead of the default editor The format of a path depends on your operating system setlibloc SETLIBLOC path command Tells Logo to use the specified directory as its library instead of the default Note that many Logo primitive procedures are actually found in the library so they may become unavailable if your new library does not include them The format of a path depends on yo
54. alue expression can be based on earlier inputs Example to proc inlist startvalue first inlist If the procedure is invoked by saying proc a b c then the variable inlist will have the value A B C and the variable startvalue will have the value A If the procedure is invoked by saying proc a b c x 50 BERKELEY LOGO 6 0 then inlist will have the value A B C and startvalue will have the value X After all the required and optional input can come a single rest input represented by the following notation inputname This is a rest input rather than an optional input because there is no default value expres sion There can be at most one rest input When the procedure is invoked the value of this inputname will be a list containing all of the actual inputs provided that were not used for required or optional inputs Example to proc ini in2 foo in3 baz in4 If this procedure is invoked by saying proc x then ini has the value X in2 has the value FOO in3 has the value BAZ and in4 has the value the empty list If it s invoked by saying proc a b Me q e then in1 has the value A in2 has the value B in3 has the value C and in4 has the value D El The maximum number of inputs for a procedure is infinite if a rest input is given otherwise 1t is the number of required inputs plus the number of optional inputs The default number of inputs for a procedure which is the number of inputs
55. ame command Erases deletes removes the named file which should not currently be open dribble DRIBBLE filename command Creates a new file whose name is the input like OPENWRITE and begins recording in that file everything that is read from the keyboard or written to the terminal That is this writing is in addition to the writing to WRITER The intent is to create a transcript of a Logo session including things like prompt characters and interactions See OPENWRITE page 22 WRITER page 25 nodribble NODRIBBLE command Stops copying information into the dribble file and closes the file setread SETREAD filename command Makes the named file the read stream used for READLIST etc The file must already be open with OPENREAD or OPENUPDATE If the input is the empty list then the read stream becomes the keyboard as usual Changing the read stream does not close the file that was previously the read stream so it is possible to alternate between files See READLIST page 20 OPENREAD page 22 OPENUPDATE page 23 setwrite SETWRITE filename command Makes the named file the write stream used for PRINT etc The file must already be open with OPENWRITE OPENAPPEND or OPENUPDATE If the input is the empty list then the write stream becomes the screen as usual Changing the write stream does not close the file that was previously the write stream so it is possible to alternate between files If the inpu
56. an o on APN 37 lio a a 12 A i Meee urushar eae eee aoe wees 54 buried sxe ri einstan A vies ede ven 60 DU Pi bios cds ate 60 DUTY rs ES 59 buryall todito ias 59 DUTY AMe picada ce te els la 59 Dublin a ek 11 Dutti a iaa 11 Dutti a eE TEn O a e 12 DUO da at o eae 47 Dubois 47 DUDO Cueca ra A A gai 89 Dutton p cece At eed 47 VCS 215 teehee ta te Shee no oie eed coed a aa 71 C CASA dE iis sien eee tans eeu eee ee ck pa ale 79 cascade it eu oe a A pend thes A ga ee 81 CASE ai eo seed mal na oa te ae ee alee BOS 74 case insensitive cc cee eens 6 caseignored Ps dico Saeed R tA deka ee eed 89 CAUCHG Tarn o teem tae oso has nem o docto 69 Cit da iaa 17 Clean iia E E wi ees 40 Clearser en tal a a ia 40 cleartexya dd iaa 26 ClICKpOS iesiri ici star nia 47 Close it o ds e er ae ea ne 23 Closed as 23 CO A is dt a ID bat 70 COMME a 10 commandline Computer_Science_Logo_Style de fned i z05a s acess adani aleno e iayon wheelies 54 BERKELEY LOGO 6 0 errat maai AS A waded ee 89 GPO AS eat 70 OTTO Si A 87 CEPA A a AN cada 30 F a sis it 37 AC NDA Tapas 40 Here NO 26 MD o 26 O ce coed ete esate Ganiste ene ed on i 41 filled ooconinno ici a al 41 filt r iia es A ia 78 A eesi Tuine hu Woe wee ees 78 dba ane soisin eey a 10 Md eine Ya ee aE 11 MIA A a Pole Tae ek a t 28 OM wie ihacy baad whe eda ee hat ok et ea ade ed 72 OEA occa ates eed eos ees atalino bdo deg edt 76 SN 67 OPM a y A wees 33
57. as the evaluated tfexpres sion remains TRUE Evaluates the first input first so the instructionlist may never be run at all The tfexpression must be an expressionlist whose value when evaluated is TRUE or FALSE do until DO UNTIL instructionlist tfexpression library procedure command Repeatedly evaluates the instructionlist as long as the evaluated tfexpres sion remains FALSE Evaluates the first input first so the instructionlist is always run at least once The tfexpression must be an expressionlist whose value when evaluated is TRUE or FALSE until UNTIL tfexpression instructionlist library procedure BERKELEY LOGO 6 0 command Repeatedly evaluates the instructionlist as long as the evaluated tfexpres sion remains FALSE Evaluates the first input first so the instructionlist may never be run at all The tfexpression must be an expressionlist whose value when evaluated is TRUE or FALSE case CASE value clauses library procedure command or operation The second input is a list of lists clauses each clause is a list whose first element is either a list of values or the word ELSE and whose butfirst is a Logo expression or instruction CASE examines the clauses in order If a clause begins with the word ELSE upper or lower case then the butfirst of that clause is evaluated and CASE outputs its value if any If the first input to CASE is a member of the first element of a clause then the butfirst of that clause is evaluat
58. ated to determine the step size If the fourth member is missing the step size will be 1 or 1 depending on whether the limit value is greater than or less than the starting value respectively The second input is an instructionlist The effect of FOR is to run that instructionlist repeatedly assigning a new value to the control variable the one named by the first member of the forcontrol list each time First the starting value is assigned to the control variable Then the value is compared to the limit value FOR is complete when the sign of current limit is the same as the sign of the step size If no explicit step size is provided the instructionlist is always run at least once An explicit step size can lead to a zero trip FOR e g FOR I 1 0 1 Otherwise the instructionlist is run then the step is added to the current value of the control variable and FOR returns to the comparison step for i 2 7 1 5 print i 5 VYNo ow N a See RUN page 67 do while DO WHILE instructionlist tfexpression library procedure command Repeatedly evaluates the instructionlist as long as the evaluated tfexpres sion remains TRUE Evaluates the first input first so the instructionlist is always run at least once The tfexpression must be an expressionlist whose value when evaluated is TRUE or FALSE while WHILE tfexpression instructionlist library procedure command Repeatedly evaluates the instructionlist as long
59. ates BURY NAMELIST varname list See BURY page 59 NAMELIST page 55 unbury UNBURY contentslist command Unburies the procedures variables and property lists named in the input That is the named items will be returned to view in CONTENTS etc See CONTENTS page 54 unburyall UNBURYALL library procedure command Abbreviates UNBURY BURIED See BURIED page 54 unburyname UNBURYNAME varname library procedure UNBURYNAME varnamelist command Abbreviates UNBURY NAMELIST varname list See UNBURY page 59 NAMELIST page 55 BERKELEY LOGO 6 0 buriedp BURIEDP contentslist BURIED contentslist outputs TRUE if the first procedure variable or property list named in the contents list is buried FALSE if not Only the first thing in the list is tested the most common use will be with a word as input naming a procedure but a contents list is allowed so that you can BURIEDP variable or BURIEDP proplist trace TRACE contentslist command Marks the named items for tracing A message is printed whenever a traced procedure is invoked giving the actual input values and whenever a traced procedure STOPs or OUTPUTs A message is printed whenever a new value is assigned to a traced variable using MAKE A message is printed whenever a new property is given to a traced property list using PPROP See STOP page 69 OUTPUT page 69 MAKE page 51 PPROP page 53 untrace UN
60. cation of PEN See PEN page 46 setbackground SETBACKGROUND colornumber or rgblist SETBG colornumber or rgblist set the screen background color by slot number or RGB values See SETPENCOLOR for details See SETPENCOLOR page 44 6 6 Pen Queries pendownp PENDOWNP PENDOWN outputs TRUE if the pen is down FALSE if it s up penmode PENMODE outputs one of the words PAINT ERASE or REVERSE according to the current pen mode See ERASE page 57 REVERSE page 10 pencolor PENCOLOR PC outputs a color number a nonnegative integer that is associated with a particular color or a list of RGB values if such a list was used as the most recent input to SETPENCOLOR There are initial assignments for the first 16 colors O black 1 blue 2 green 3 cyan BERKELEY LOGO 6 0 4 red 5 magenta 6 yellow 7 white 8 brown 9 tan 10 forest 11 aqua 12 salmon 13 purple 14 orange 15 grey but other colors can be assigned to numbers by the PALETTE command palette PALETTE colornumber outputs a list of three nonnegative numbers less than 100 specifying the percent saturation of red green and blue in the color associated with the given number pensize PENSIZE outputs a list of two positive integers specifying the horizontal and vertical thickness of the turtle pen In some implementations including wxWidgets the two numbers are always equal PENPATTERN outputs system specific pen information pen PEN library p
61. d returning to toplevel The CATCH does not output if an error is caught Also during the running of the instructionlist the variable ERRACT is temporarily unbound If there is an error while ERRACT has a value that value is taken as an instructionlist to be run after printing the error message Typically the value of ERRACT if any is the list PAUSE See ERROR page 70 ERRACT page 89 PAUSE page 70 throw THROW tag THROW tag value command Must be used within the scope of a CATCH with an equal tag Ends the running of the instructionlist of the CATCH If THROW is used with only one input the corresponding CATCH does not output a value If THROW is used with two inputs the second provides an output for the CATCH THROW TOPLEVEL can be used to terminate all running procedures and interactive pauses and return to the toplevel instruction prompt Typing the system interrupt character BERKELEY LOGO 6 0 ALT S for wxWidgets otherwise normally CONTROL C for Unix CONTROL Q for DOS or COMMAND PERIOD for Mac has the same effect THROW ERROR can be used to generate an error condition If the error is not caught it prints a message THROW ERROR with the usual indication of where the error in this case the THROW occurred If a second input is used along with a tag of ERROR that second input is used as the text of the error message instead of the standard message Also in this case the location indicated for the
62. d spss crre sereo i ee a E Tea E a a a a 45 6 6 Pen Queries nene ar pania ee a S a hep sends wee 45 PendOWN Piss dak renra ni hile tod aha So A a A a 45 POMO tai de ee a a eee ee 45 Pencol 2 hers deb heath eatin ES eee acta et 45 Dali te ae Shee sen an a sae ae 46 DENSIZE yt 3s A a ed wae Ree 46 PE A Meee eee die a 46 acker nd nmrs 0s Aneesh dia Ted ta alles 46 6 7 Saving and Loading Pictures 0 0 c cece 46 SAVEDICUS Mii eet pees Be A eee geet 46 load Piet eudg se A Rakes a Gee hee Ses Saas 46 CPSPICU sore sect ed tetera ours aE Sol EA A E E aie 2 sell E NEET 47 6 8 Mouse Queries cece irei Di aii oA aaa Aa 47 MUSEO i hace Se gay ie bee AR EA A A 47 CICK POS sir A A arses 47 Puttonp s dite anaE A ee eee E 47 P tt a A ee ie E ae na one es 47 vil BERKELEY LOGO 6 0 7 Workspace Management 49 7 1 Procedure Definition oooooocccccoorcccnnncnccrn rar 49 DO A AA 49 dee ra 50 VR ana a RIOS tid ata la da 51 Me a dae 51 COPY aiii O AA cc 51 7 2 Variable Definition p EE E A cece ar 51 MAKE ate beta lade e Ga E SE AREAS 51 MM Ci A dc 51 lcal A AS EE E Gan E a eee ies 52 local poi a ees ee E E he ale AA E E ae 52 Naat oN EAA A E E E E A EA Att ations aot E 52 Slopak sise hac ie E a 52 ES Property Lists c e A a i hoa a ls 53 DDE O Pictasepereite stb E wae aes 53 PrOD ninaninata A a E e 53 TEMPTOP a A a ll cb feats ANE E 53 Dll A a E ae eee t 53 7 4 Workspace Predica
63. d stream initially the keyboard and outputs that line as a list The line is separated into members as though it were typed in square brackets in an instruction If the read stream is a file and the end of file is reached READLIST outputs the empty word not the empty list READLIST processes backslash vertical bar and tilde characters in the read stream the output list will not contain these characters but they will have had their usual effect READLIST does not however treat semicolon as a comment character readword READWORD RW reads a line from the read stream and outputs that line as a word The output is a single word even if the line contains spaces brackets etc If the read stream is a file and the end of file is reached READWORD outputs the empty list not the empty word READWORD processes backslash vertical bar and tilde characters in the read stream In the case of a tilde used for line continuation the output word does include the tilde and the newline characters so that the user program can tell exactly what the user entered Vertical bars in the line are also preserved in the output Backslash characters are not preserved in the output readrawline READRAWLINE reads a line from the read stream and outputs that line as a word The output is a single word even if the line contains spaces brackets etc If the read stream is a file and the end of file is reached READRAWLINE outputs the empty list not the empty
64. dat and are automatically put into effect when a Logo session begins refresh REFRESH command tells Logo to remember the turtle s motions so that they can be used for high resolution printing wxWidgets or to refresh the graphics window if it is moved resized or overlayed non wxWidgets This is the default norefresh NOREFRESH command tells Logo not to remember the turtle s motions which may be useful to save time and memory if your program is interactive or animated rather than drawing a static picture you ll want to print later wxWidgets In non wxWidgets versions using NORE FRESH may prevent Logo from restoring the graphics image after the window is moved resized or overlayed 6 4 Turtle and Window Queries Chapter 6 Graphics shownp SHOWNP SHOWN outputs TRUE if the turtle is shown visible FALSE if the turtle is hidden See SHOWTURTLE and HIDETURTLE See SHOWTURTLE page 39 HIDETURTLE page 40 screenmode SCREENMODE outputs the word TEXTSCREEN SPLITSCREEN or FULLSCREEN depending on the current screen mode turtlemode TURTLEMODE outputs the word WRAP FENCE or WINDOW depending on the current turtle mode labelsize LABELSIZE wxWidgets only outputs a list of two positive integers the width and height of characters displayed by LABEL measured in turtle steps which will be different from screen pixels if SETSCRUNCH has been used There is no SETLABELSIZE because the width and
65. ded become the value of the specified variable openappend OPENAPPEND filename command Opens the named file for writing If the file already exists the write position is initially set to the end of the old file so that newly written data will be appended to it openupdate OPENUPDATE filename command Opens the named file for reading and writing The read and write position is initially set to the end of the old file if any Note each open file has only one position for both reading and writing If a file opened for update is both READER and WRITER at the same time then SETREADPOS will also affect WRITEPOS and vice versa Also if you alternate reading and writing the same file you must SETREADPOS between a write and a read and SETWRITEPOS between a read and a write See READER page 25 WRITER page 25 SETREADPOS page 25 SETWRITE POS page 25 close CLOSE filename command Closes the named file If the file was currently the reader or writer then the reader or writer is changed to the keyboard or screen as if SETREAD or SETWRITE had been done allopen ALLOPEN outputs a list whose members are the names of all files currently open This list does not include the dribble file if any closeall CLOSEALL library procedure command Closes all open files Abbreviates FOREACH ALLOPEN CLOSE See FOREACH page 76 CLOSE page 23 erasefile ERASEFILE filename 24 BERKELEY LOGO 6 0 ERF filen
66. der gensym GENSYM library procedure outputs a unique word each time it s invoked The words are of the form G1 G2 etc 2 2 Data Selectors first FIRST thing Chapter 2 Data Structure Primitives 11 if the input is a word outputs the first character of the word If the input is a list outputs the first member of the list If the input is an array outputs the origin of the array that is the index of the first member of the array firsts FIRSTS list outputs a list containing the FIRST of each member of the input list It is an error if any member of the input list is empty The input itself may be empty in which case the output is also empty This could be written as to firsts list output map first list end but is provided as a primitive in order to speed up the iteration tools MAP MAP SE and FOREACH to transpose matrix if emptyp first matrix op op fput firsts matrix transpose bfs matrix end See MAP page 77 MAPdSE page 77 FOREACH page 76 last LAST wordorlist if the input is a word outputs the last character of the word If the input is a list outputs the last member of the list butfirst BUTFIRST wordorlist BF wordorlist if the input is a word outputs a word containing all but the first character of the input If the input is a list outputs a list containing all but the first member of the input butfirsts BUTFIRSTS list BFS list outputs a list containing t
67. e 2 green 3 cyan 4 red 5 magenta 6 yellow 7 white 8 brown 9 tan 10 forest 11 aqua 12 salmon 13 purple 14 orange 15 grey but other colors can be assigned to numbers by the PALETTE command Alternatively sets the pen color to the given RGB values a list of three nonnegative numbers less than 100 specifying the percent saturation of red green and blue in the desired color setpalette SETPALETTE colornumber rgblist sets the actual color corresponding to a given number if allowed by the hardware and operating system Colornumber must be an integer greater than or equal to 8 Logo tries to keep the first 8 colors constant The second input is a list of three nonnegative numbers less than 100 specifying the percent saturation of red green and blue in the desired color set pensize SETPENSIZE size Chapter 6 Graphics sets the thickness of the pen The input is either a single positive integer or a list of two positive integers for horizontal and vertical thickness Some versions pay no attention to the second number but always have a square pen setpenpattern SETPENPATTERN pattern sets hardware dependent pen characteristics This command is not guaranteed compatible between implementations on different machines setpen SETPEN list library procedure sets the pen s position mode thickness and hardware dependent characteristics according to the information in the input list which should be taken from an earlier invo
68. e GNU General Public License for more details You should have received a copy of the GNU General Public License along with this program if not write to the Free Software Foundation Inc 675 Mass Ave Cambridge MA 02139 USA This is a program that is still being written Many things are missing including adequate documentation This manual assumes that you already know how to program in Logo and merely presents the details of this new implementation Read Computer Science Logo Style Volume 1 Symbolic Computing by Brian Harvey MIT Press 1997 for a tutorial on Logo programming with emphasis on symbolic computation Here are the special features of this dialect of Logo Source file compatible among Unix DOS Windows and Mac platforms Random access arrays Variable number of inputs to user defined procedures Mutators for list structure dangerous Pause on error and other improvements to error handling Comments and continuation lines formatting is preserved when procedure definitions are saved or edited Terrapin style tokenization e g 2 3 is a list with one member but LCSEstyle syntax no special forms except TO The best of both worlds First class instruction and expression templates see APPLY Macros 2 BERKELEY LOGO 6 0 Features not found in Berkeley Logo include robotics music animation parallelism and multimedia For those buy a commercial version 1 2 Getter Setter Variable Syntax Logo di
69. e expression produces a value Example to invoke function inputs 2 maybeoutput apply function inputs end invoke print a b c abc print invoke word a b c abc This is an alternative to RUNRESULT It s fast and easy to use at the cost of being an exception to Logo s evaluation rules Ordinarily it should be an error if the expression that s supposed to provide an input to something doesn t have a value See OUTPUT page 69 STOP page 69 RUNRESULT page 67 goto GOTO word command Looks for a TAG command with the same input in the same procedure and continues running the procedure from the location of that TAG It is meaningless to use GOTO outside of a procedure 72 BERKELEY LOGO 6 0 tag TAG quoted word command Does nothing The input must be a literal word following a quotation mark not the result of a computation Tags are used by the GOTO command ignore IGNORE value library procedure command Does nothing Used when an expression is evaluated for a side effect and its actual value is unimportant list library procedure outputs a list equal to its input but with certain substitutions If a member of the input list is the word comma then the following member should be an instructionlist that produces an output when run That output value replaces the comma and the instructionlist If a member of the input list is the word comma atsign then t
70. e order of two variable parts no reorderable message has more than two you would for example replace the line p doesn t like s as input with s is a lousy input to p The plus sign tells the message printer to reverse the order you must reverse the order of p and s if both are used to match The plus sign goes just after the first percent sign in the message which might not be at the beginning of the line The sequence n in a message represents a newline don t be fooled into thinking that the n is part of the following word Some messages appear twice in the file this isn t a mistake The two spaces before to in I don t know how to aren t a mistake either The message containing just p is for user provided error messages in THROW ERROR The message in 4s n4s is the part of all error messages that indicates where the error occurred if it was inside a procedure you might want to change the word in to your language s defined n is what LOAD prints BERKELEY LOGO 6 0 for each procedure defined if the variable LOADNOISILY is TRUE to p nend n n is what EDIT puts in the temporary file if you ask to edit a procedure that isn t already defined Also in the Messages file are lines containing only one word each the first of these is the word true Some of these words are recognized by Logo in user input some are generated by Logo some are both For example the words TRUE and FALSE are recognized as Boolean va
71. earest integer to the input sqrt SQRT num outputs the square root of the input which must be nonnegative power POWER numi num2 outputs numl to the num2 power If num1 is negative then num2 must be an integer exp EXP num outputs e 2 718281828 to the input power log10 LOG10 num outputs the common logarithm of the input In LN num outputs the natural logarithm of the input Chapter 4 Arithmetic 31 sin SIN degrees outputs the sine of its input which is taken in degrees radsin RADSIN radians outputs the sine of its input which is taken in radians COS COS degrees outputs the cosine of its input which is taken in degrees radcos RADCOS radians outputs the cosine of its input which is taken in radians arctan ARCTAN num ARCTAN x y outputs the arctangent in degrees of its input With two inputs outputs the arctangent of y x if x is nonzero or 90 or 90 depending on the sign of y if x is zero radarctan RADARCTAN num RADARCTAN x y outputs the arctangent in radians of its input With two inputs outputs the arctangent of y x if x is nonzero or pi 2 or pi 2 depending on the sign of y if x is zero The expression 2 RADARCTAN O 1 can be used to get the value of pi iseq ISEQ from to library procedure outputs a list of the integers from from to to inclusive show iseq 3 7 34 5 6 7 show iseq 7 3 7 6 5 4 3 rseq RSEQ from to count library proc
72. ed and CASE outputs its value if any If neither of these conditions is met then CASE goes on to the next clause If no clause is satisfied CASE does nothing Example to vowelp letter output case letter la e i o u true else false end cond COND clauses library procedure command or operation The input is a list of lists clauses each clause is a list whose first element is either an expression whose value is TRUE or FALSE or the word ELSE and whose butfirst is a Logo expression or instruction COND examines the clauses in order If a clause begins with the word ELSE upper or lower case then the butfirst of that clause is evaluated and CASE outputs its value if any Otherwise the first element of the clause is evaluated the resulting value must be TRUE or FALSE If it s TRUE then the butfirst of that clause is evaluated and COND outputs its value if any If the value is FALSE then COND goes on to the next clause If no clause is satisfied COND does nothing Example to evens numbers select even numbers from a list op cond emptyp numbers evenp first numbers assuming EVENP is defined fput first numbers evens butfirst numbers else evens butfirst numbers end 8 2 Template based Iteration The procedures in this section are iteration tools based on the idea of a template This is a generalization of an instruction list or an expression list in which slots are provided for the tool to i
73. ed as separate expressions rather than in a list foreach FOREACH data template library procedure FOREACH datal data2 template Chapter 8 Control Structures command Evaluates the template list repeatedly once for each member of the data list If more than one data list are given each of them must be the same length The data inputs can be words in which case the template is evaluated once for each character In a template the symbol REST represents the portion of the data input to the right of the member currently being used as the slot filler That is if the data input is A B C D E and the template is being evaluated with replaced by B then REST would be replaced by C D E If multiple parallel slots are used then REST 1 goes with 71 etc In a template the symbol represents the position in the data input of the member currently being used as the slot filler That is if the data input is A B C D E and the template is being evaluated with replaced by B then would be replaced by 2 map MAP template data library procedure MAP template datal data2 outputs a word or list depending on the type of the data input of the same length as that data input If more than one data input are given the output is of the same type as datal Each member of the output is the result of evaluating the template list filling the slots with the corresponding member s of the data input s All data inputs
74. edure outputs a list of count equally spaced rational numbers between from and to inclusive 32 BERKELEY LOGO 6 0 show rseq 3 5 9 3 3 25 3 5 3 75 4 4 25 4 5 4 75 5 show rseq 3 5 5 3 3 5 4 4 5 5 4 2 Numeric Predicates lessp LESSP numi num2 LESS numi num2 num1 lt num2 outputs TRUE if its first input is strictly less than its second greaterp GREATERP numi num2 GREATER numi num2 numi gt num2 outputs TRUE if its first input is strictly greater than its second lessequalp LESSEQUALP numi num2 LESSEQUAL numi num2 numi lt num2 outputs TRUE if its first input is less than or equal to its second greaterequalp GREATEREQUALP numi num2 GREATEREQUAL num1i num2 numl gt num2 outputs TRUE if its first input is greater than or equal to its second 4 3 Random Numbers random RANDOM num RANDOM start end with one input outputs a random nonnegative integer less than its input which must be a positive integer With two inputs RANDOM outputs a random integer greater than or equal to the first input and less than or equal to the second input Both inputs must be integers and the first must be less than the second RANDOM O 9 is equivalent to RANDOM 10 RANDOM 3 8 is equivalent to RANDOM 6 3 Chapter 4 Arithmetic rerandom RERANDOM RERANDOM seed command Makes the results of RANDOM reproducible Ordinarily the sequence of random numbers is different each time Logo is u
75. ees 64 SCLCUPSOLS lt hsts sy iene eee ned a ie Se ages 26 seteditor eiii iia 64 Sii a Ads ie ooh eee 28 Seth aid ena emg ad da 38 setheading coil ey 38 Sethelploes ccs ek eats oak Re Pee ees ee ESS 64 Setite A Pa aa eia ui a EE Sna 12 setlabelh ight s aehse nbs eben a eve y oelees 41 setliblo nidad az 64 SEMA cir lp bd 26 setpalette cias at 44 Set A A E 44 SEP aii a a 45 setpencolo ici ae Eae eects loot do 44 setpenpattern se sais siro tede week eon ees 45 SCUPENSIZE soio hee ae bag Sere be cee ee 44 SCUPOS ieee al fl needed a haces bee 38 setprelicacinda dd Lode gah bola 22 SCA ia 24 SETE d POS 3 cita ia po ed 25 S tscrunch coi dad 42 SEU ni AA ae ee Beene 27 SettemploC tia oe eed Saeed eee 64 SOUL vient ates Resa how aie eee ae Waa BASE eo 2 settextcolOr siria a cia 27 SCLCCKUSIZE id A 27 SCUWTLILE A da sae aha 24 setwriteposS 2 2 cece eee eee eee 25 SOUR Straw O eee ade 38 INDEX SOC aise ended A aaa 38 shell aor eer enn bite a Be ten 21 SHOW ssduu scents a Pas 20 SHOWN siete Mea eee ne E Ea ois 43 SHOWNP im ki la9 eho E gileneieedia esate 43 showturtle vi da 39 A GA Loe OGRE LESS RR BE Boece ke le 2 31 SPLESCTE Nit Seater a ados aa 42 SOLE ids crasas rs ta 30 MA td 42 MAI a datada ade 39 Stand Out ra 17 Starting UCbLO gO iii ti ias 5 SUALTU Decide ayeacardal pi in caos 91 SEDA He cies Sayers sans Sa achat E MER Be 60 Stepped ae deb ovac teen E E tag ees 54 Stepped sch kt ea AE yo ra 61 Stepped re
76. ef Semicolon has no special meaning in data lines read by READWORD or READLIST but such a line can later be reparsed using RUNPARSE and then comments will be recognized The two character sequence at the beginning of a line also starts a comment Unix users can therefore write a file containing Logo commands starting with the line usr local bin logo or wherever your Logo executable lives and the file will be executable directly from the shell To include an otherwise delimiting character including semicolon or tilde in a word pre cede it with backslash If the last character of a line is a backslash then the newline character following the backslash will be part of the last word on the line and the line continues onto the following line To include a backslash in a word use If the combina tion backslash newline is entered at the terminal Logo will issue a backslash as a prompt character for the continuation line All of this applies to data lines read with READWORD or READLIST as well as to instruction lines A line read with READRAWLINE has no special quoting mechanism both backslash and ver tical bar described below are just ordinary characters An alternative notation to include otherwise delimiting characters in words is to enclose a group of characters in vertical bars All characters between vertical bars are treated as if they were letters In data read with READWORD the vertical bars are preserved in the
77. en color filling the polygon with the given color which can be a color number or an RGB list The instruction list cannot include another FILLED invocation wxWidgets only label LABEL text takes a word or list as input and prints the input on the graphics window starting at the turtle s position setlabelheight SETLABELHEIGHT height command wxWidgets only Takes a positive integer argument and tries to set the font size so that the character height including descenders is that many turtle steps This will be different from the number of screen pixels if SETSCRUNCH has been used Also note that SETSCRUNCH changes the font size to try to preserve this height in turtle steps Note that the query operation corresponding to this command is LABELSIZE not LABELHEIGHT because it tells you the width as well as the height of characters in the current font textscreen TEXTSCREEN TS rearranges the size and position of windows to maximize the space available in the text window the window used for interaction with Logo The details differ among machines Compare SPLITSCREEN and FULLSCREEN See SPLITSCREEN page 42 fullscreen FULLSCREEN FS rearranges the size and position of windows to maximize the space available in the graphics window The details differ among machines Compare SPLITSCREEN and TEXTSCREEN 42 BERKELEY LOGO 6 0 Since there must be a text window to allow printing including the printing of the Logo prompt
78. er alternatives If the command is a literal list in the instruction line and if you want a backslash character sent to the shell you must use to get the backslash through Logo s reader intact The output is a list containing one member for each line generated by the shell command Ordinarily each such line is represented by a list in the output as though the line were read using READLIST If a second input is given regardless of the value of the input each line is represented by a word in the output as though it were read with READWORD Example to dayofweek output first first shell date end This is first first to extract the first word of the first and only line of the shell output Under MacOS X SHELL works as under Unix SHELL is not available under Mac Classic 22 BERKELEY LOGO 6 0 Under DOS SHELL is a command not an operation it sends its input to a DOS command processor but does not collect the result of the command Under Windows the wxWidgets version of Logo behaves as under Unix except that DOS style commands are understood use dir rather than 1s The non wxWidgets version behaves like the DOS version 3 3 File Access set prefix SETPREFIX string command Sets a prefix that will be used as the implicit beginning of filenames in OPENREAD OPENWRITE OPENAPPEND OPENUPDATE LOAD and SAVE commands Logo will put the appro priate separator character slash for Unix backslash for DOS Windows colon for Mac
79. ere the sequence 37 making the number an input to the procedure See the discussion of templates below This special treatment does not apply to words read as data to words with a non number following the question mark or if the question mark is backslashed A line an instruction line or one read by READLIST or READWORD can be continued onto the following line if its last character is a tilde READWORD preserves the tilde and the newline READLIST does not Lines read with READRAWLINE are never continued An instruction line or a line read by READLIST but not by READWORD is automatically con tinued to the next line as if ended with a tilde if there are unmatched brackets parentheses braces or vertical bars pending However it s an error if the continuation line contains only the word END this is to prevent runaway procedure definitions Lines explicitly continued with a tilde avoid this restriction If a line being typed interactively on the keyboard is continued either with a tilde or automatically Logo will display a tilde as a prompt character for the continuation line Chapter 1 Introduction 7 A semicolon begins a comment in an instruction line Logo ignores characters from the semicolon to the end of the line A tilde as the last character still indicates a continuation line but not a continuation of the comment For example typing the instruction print abc comment def will print the word abcd
80. he BUTFIRST of each member of the input list It is an error if any member of the input list is empty or an array The input itself may be empty in which case the output is also empty This could be written as to butfirsts list output map butfirst list end 12 BERKELEY LOGO 6 0 but is provided as a primitive in order to speed up the iteration tools MAP MAP SE and FOREACH See MAP page 77 MAPdSE page 77 FOREACH page 76 butlast BUTLAST wordorlist BL wordorlist if the input is a word outputs a word containing all but the last character of the input If the input is a list outputs a list containing all but the last member of the input item ITEM index thing if the thing is a word outputs the indexth character of the word If the thing is a list outputs the indexth member of the list If the thing is an array outputs the indexth member of the array Index starts at 1 for words and lists the starting index of an array is specified when the array is created mditem MDITEM indexlist array library procedure outputs the member of the multidimensional array selected by the list of numbers indexlist pick PICK list library procedure outputs a randomly chosen member of the input list remove REMOVE thing list library procedure outputs a copy of list with every member equal to thing removed remdup REMDUP list library procedure outputs a copy of list with duplicate members removed If two or more member
81. he following member should be an instructionlist that outputs a list when run The members of that list replace the and the instructionlist Example show foo baz bf a b cl garply bf a b c will print foo baz b c garply b c A word starting with or is treated as if the rest of the word were a one word list e g f00 is equivalent to Foo A word starting with quote comma or colon comma becomes a word starting with or but with the result of running the substitution or its first word if the result is a list replacing what comes after the comma Backquotes can be nested Substitution is done only for commas at the same depth as the backquote in which they are found show a b 1 2 foo 1 3 d e f a lt b 1 2 foo 4 d el f make name1 x make name2 y show la b namel name2 d e la lt b x y d el for FOR forcontrol instructionlist library procedure command The first input must be a list containing three or four members 1 a word which will be used as the name of a local variable 2 a word or list that will be evaluated as Chapter 8 Control Structures by RUN to determine a number the starting value of the variable 3 a word or list that will be evaluated to determine a number the limit value of the variable 4 an optional word or list that will be evalu
82. hen all command line arguments after the hyphen are not taken as filenames but are instead collected in a list one word per argument the buried variable COMMAND LINE contains that list of arguments or the empty list if there are none On my Linux system if the first line of an executable shell script is usr local bin logo note the hyphen then the script can be given command line arguments and they all end up in COMMAND LINE along with the script s path Experiment If you type your interrupt character see table below Logo will stop what it s doing and return to top level as if you did THROW TOPLEVEL If you type your quit character Logo will pause as if you did PAUSE wxWidgets Unix DOS Windows Mac Classic toplevel alt S usually ctrl C ctr1 Q command period pause alt P usually ctrl ctrl W command comma If you have an environment variable called LOGOLIB whose value is the name of a directory then Logo will use that directory instead of the default library If you invoke a procedure 6 BERKELEY LOGO 6 0 that has not been defined Logo first looks for a file in the current directory named proc 1g where proc is the procedure name in lower case letters If such a file exists Logo loads that file If the missing procedure is still undefined or if there is no such file Logo then looks in the library directory for a file named proc no 1g and if it exists loads it If neither file contains a definiti
83. hile Logo is running on one machine will probably not have the desired effect if printed on another type of machine In the Macintosh classic version the way that standout works is incompatible with the use of characters whose ASCII code is greater than 127 Therefore you have a choice to make The instruction CANINVERSE 0 18 BERKELEY LOGO 6 0 disables standout but enables the display of ASCII codes above 127 and the instruction CANINVERSE 1 restores the default situation in which standout is enabled and the extra graphic characters cannot be printed parse PARSE word outputs the list that would result if the input word were entered in response to a READLIST operation That is PARSE READWORD has the same value as READLIST for the same characters read See READLIST page 20 READWORD page 20 runparse RUNPARSE wordorlist outputs the list that would result if the input word or list were entered as an instruction line characters such as infix operators and parentheses are separate members of the output Note that sublists of a runparsed list are not themselves runparsed Chapter 3 Communication 19 3 Communication 3 1 Transmitters Note If there is a variable named PRINTDEPTHLIMIT with a nonnegative integer value then complex list and array structures will be printed only to the allowed depth That is members of members of of members will be allowed only so far The members omitted because they are just past
84. hite space parentheses brackets infix operators backslash vertical bar tilde quote question mark colon and semicolon Chapter 2 Data Structure Primitives 9 2 Data Structure Primitives 2 1 Constructors word WORD wordi word2 WORD wordi word2 word3 outputs a word formed by concatenating its inputs list LIST thing thing2 LIST thing1 thing2 thing3 outputs a list whose members are its inputs which can be any Logo datum word list or array sentence SENTENCE thing1 thing2 SE thing1 thing2 SENTENCE thing1 thing2 thing3 SE thingl thing2 thing3 outputs a list whose members are its inputs if those inputs are not lists or the members of its inputs if those inputs are lists fput FPUT thing list outputs a list equal to its second input with one extra member the first input at the beginning If the second input is a word then the first input must be a one letter word and FPUT is equivalent to WORD Iput LPUT thing list outputs a list equal to its second input with one extra member the first input at the end If the second input is a word then the first input must be a one letter word and LPUT is equivalent to WORD with its inputs in the other order array ARRAY size ARRAY size origin outputs an array of size members must be a positive integer each of which initially is an empty list Array members can be selected with ITEM and changed with SETITEM The first membe
85. ied Ledeied ened abe pls 61 SOPA Heals sag A T 69 SUBStEING leis pa oanien ENA E pecs pe ae Mewes 16 SUBStrINgp lt Speet sen tink ede Beit Sosa dey 16 SUM as P anette wan EE A he sade ee 29 TAG En teb a ea 72 EA A SERS Ree 61 templates iia ad an TIN 74 teste rs beta dd 68 DARA AAA 51 TEX SCTE in a 41 textSizZe ia dt iaa dabas 27 Mir io ute aaas aa 52 o A NA 69 DO iS AA 49 GOWALOS vrs DOS aa dE 39 AC daa 60 A seeds Pees Mal eres ewe 54 LACA ud a Seta Wee ees 60 LACA Disc hese he NGG EES Sea eee OTR es 60 101 CP AMSLER veer aa al a 81 turtlemode cia nena means 43 O 19 U UNDU Y ii 59 tinburyalliin eoe daa rs EE 59 nburyname sie 59 UNDULY ONECIG an ra ee oa eE e EA 91 A O 60 Until Aia 73 untras e ieena gtis ea ies Rita Vets 60 uppercase seis een e harass lada 17 usealternatenaMmes 0 0 e cece ee eee eee 91 V ybarred siii MSS heehee 16 A a ae cee rea een ead 16 WAltias Cort ad ooh ee abe e aa a oes Na 71 wilen gedaen a ce oe he ee Peet eet see 73 WATGOW A O 40 MO a e te dd 9 WO PD ascii oa id ii 14 WEED ida pote no 40 WIItEPOSs 222 igos iir ua ea e eed ia E a 25 Wre o arreda e WAS ee A EET ES S 25 X D LEO A EE EEE E ee E E 39
86. ining a macro that doesn t terminate or by failing to construct the instruction list properly Lisp users should note that Logo macros are not special forms That is the inputs to the macro are evaluated normally as they would be for any other Logo procedure It s only the output from the macro that s handled unusually Here s another example macro localmake name value output list local word name apply Chapter 9 Macros make list name value end It s used this way to try localmake garply hello print garply end LOCALMAKE outputs the list local garply apply make garply hello The reason for the use of APPLY is to avoid having to decide whether or not the second input to MAKE requires a quotation mark before it In this case it would MAKE GARPLY HELLO but the quotation mark would be wrong if the value were a list It s often convenient to use the function to construct the instruction list macro localmake name value op local word namel apply make name value end On the other hand is pretty slow since it s tree recursive and written in Logo See TO page 49 DEFINE page 50 APPLY page 76 STOP page 69 OUTPUT page 69 defmacro See AMACRO page 83 macrop MACROP name MACRO name outputs TRUE if its input is the name of a macro macroexpand MACROEXPAND expr library procedure takes as its input a Log
87. input If there is more than one such variable the innermost local variable of that name is chosen The colon notation is an abbreviation not for THING but for the combination thing so that FOO means THING FOO global GLOBAL varname GLOBAL varnamelist GLOBAL varnamel varname2 command Accepts as inputs one or more words or a list of words A global variable is created for each of these words with that word as its name The only reason this is necessary is that you might want to use the setter notation SETXYZ for a variable XYZ that does not already have a value GLOBAL XYZ makes that legal Note If there is currently a local variable of the same name this command does not make Logo use the global value instead of the local one Chapter 7 Workspace Management 53 7 3 Property Lists Note Names of property lists are always case insensitive Names of individual properties are case sensitive or case insensitive depending on the value of CASEIGNOREDP which is TRUE by default See CASEIGNOREDP page 89 In principle every possible name is the name of a property list which is initially empty So Logo never gives a no such property list error as it would for undefined procedure or variable names But the primitive procedures that deal with all property lists CONTENTS PLISTS etc list only nonempty ones To erase a property list ERASE page 57 means to make it empty removing all properties from it p
88. ion to run that expression must produce a TRUE or FALSE value List expressions are evaluated from left to right as soon as a TRUE value is found the remaining inputs are not examined Example IF OR X 0 some long computation to avoid the long computation if the first condition is met See CASEIGNOREDP page 89 not NOT tf outputs TRUE if the input is FALSE and vice versa The input can be a list in which case it is taken as an expression to run that expression must produce a TRUE or FALSE value Chapter 6 Graphics 6 Graphics Berkeley Logo provides traditional Logo turtle graphics with one turtle Multiple turtles dynamic turtles and collision detection are not supported This is the most hardware dependent part of Logo some features may exist on some machines but not others Nev ertheless the goal has been to make Logo programs as portable as possible rather than to take fullest advantage of the capabilities of each machine In particular Logo attempts to scale the screen so that turtle coordinates 100 100 and 100 100 fit on the graphics window and so that the aspect ratio is 1 1 The center of the graphics window which may or may not be the entire screen depending on the machine used is turtle location 0 0 Positive X is to the right positive Y is up Headings angles are measured in degrees clockwise from the positive Y axis This differs from the common mathematical convention of measuring angles
89. iven the value PAUSE so that an interactive pause will be entered in the event of an error This allows the user to check values of local variables at the time of the error Typing the system quit character ALT S for wxWidgets otherwise normally CONTROL for Unix CONTROL W for DOS or COMMAND COMMA for Mac will also enter a pause See ERRACT page 89 continue CONTINUE value CO value Chapter 8 Control Structures 71 CONTINUE CO command Ends the current interactive pause returning to the context of the PAUSE invo cation that began it If CONTINUE is given an input that value is used as the output from the PAUSE If not the PAUSE does not output Exceptionally the CONTINUE command can be used without its default input and without parentheses provided that nothing follows it on the instruction line wait WAIT time command Delays further execution for time 60ths of a second Also causes any buffered characters destined for the terminal to be printed immediately WAIT O can be used to achieve this buffer flushing without actually waiting bye BYE command Exits from Logo returns to the operating system maybeoutput MAYBEOUTPUT value special form works like OUTPUT except that the expression that provides the input value might not in fact output a value in which case the effect is like STOP This is intended for use in control structure definitions for cases in which you don t know whether or not som
90. l aii deca 24 O eee ee E IE E 24 SETI ii a bac veg aie teen E cee es 24 TEAC OL oon ces hs Athenee heehee E O ee Seated 25 WI A e ise hs ead st ee olen el pao Mee oe 25 setread POS ta lites ake be cd Pend Kia bow ee hah Sen ee ia a 25 SCLWIILEPOS ui id ada ate Sele 25 TOA POS cs kta sus Sedat ted ee ad te Bee ee Rea es 25 WIENED OS SEa se ae eee nt ey weds the Ge sad Soe te he 25 OPD A EET 25 TOP saree 2 et teat NEA pee Aw eet Peale Fat 26 3 4 Terminal ACCESS 0 ccc ec eee cece eee ene ee eeees 26 Pr ys aida dette pee aetna ie ee Se 26 Cleartext A et a eich tcl ae ea aa de cei en 26 Seters a SS Stiles 26 CULO ia A Bete ate aida See a ee eee 26 SOMOS ssc EA have here ates eine ee eee ee ee EREA 26 SETLEXECO lOs ner da sens eke peda ote 27 INCTCASCIONG A cil 8 cA olan ess mince nate ceed ROIS eat aes 27 SODLEXTSIZE eei iia aa A elk a AA SS Ad 27 texis A A AA PO a aed ole ek 27 Serio rd gs tater aoa et at a Aa ck cds glo RU e Y 28 A A See 28 EN 29 4 1 Numeric Operati0NS 0oococccccocnccccnnrnnac eee eee eee 29 UU A a a aa 29 o kk te a SG a 29 MAA A A Sd oy Pn he ae eh dca a a et 29 LOGIC oa sat aa dd ed ee nado la ed 29 quod ds A Se aes 29 remainder A aa oh Sota ded Aa aG 30 MOI nn cana Sean ik oor hie en wns aoe 30 DIG ae Sess ea a art Need a Seed nhc ata bse real 30 TOUNG A A ude B cere opla N steel eae be eNiae SE 30 Ud A a AA NER age Sep ia are te aes ca Seve Talon 30 POWER AAA E AAA eet 30 OPA A EA ALEA AAA AAA TIA Seas 3
91. l be evaluated whenever a mouse button is pressed Note that the user may have released the button before the instructions are evaluated BUTTON will still output which button was most recently pressed CLICKPOS will output the position of the mouse cursor at the moment the button was pressed this may be different from MOUSEPOS if the user moves the mouse after clicking Note that it s possible for the user to press a button during the evaluation of the instruction list If this would confuse your program prevent it by temporarily setting BUTTONACT to the empty list One easy way to do that is the following make buttonact button action to button action buttonact whatever you want the button to do end caseignoredp CASEIGNOREDP variable if TRUE indicates that lower case and upper case letters should be considered equal by EQUALP BEFOREP MEMBERP etc Logo initially makes this variable TRUE and buries it See EQUALP page 14 BEFOREP page 15 JMEMBERP page 15 commandline COMMANDLINE variable contains any text appearing after a hyphen on the command line used to start Logo erract ERRACT variable BERKELEY LOGO 6 0 an instructionlist that will be run in the event of an error Typically has the value PAUSE to allow interactive debugging See PAUSE page 70 fullprintp FULLPRINTP variable if TRUE then words that were created using backslash or vertical bar to include characters that
92. lues by IF and IFELSE and are also generated by Logo as outputs from the primitive predicates such as EQUALP The word END is recognized as the end of a procedure definition and may be generated when Logo reconstructs a procedure body for PO or EDIT I ve used capital letters in this paragraph for easier reading but the words in the Messages file should be in lower case If you replace these with non English words Logo will recognize both the English names and your alternate names For example if you replace the word true with vrai then Logo will understand both of these IF TRUE PRINT YES IF VRAI PRINT YES The variable UseAlternateNames determines whether Logo will generate other language names for example whether predicate functions return the other language alternates for TRUE and FALSE This variable is FALSE by default meaning that the English words will be generated You might wish to have English named predicate functions generate English TRUE and FALSE while other language named predicates generate the alternate words This can be done by leaving UseAlternateNames false and instead of defining the other language pred icates with COPYDEF do it this way to french boolean bool if equalp bool true output vrai if equalp bool false output faux output bool shouldn t happen end to make french predicate french english arity define french inputs arity output french boolean a
93. m number of members in any one list that will be printed by PRINT etc See PRINT page 19 redefp REDEFP variable if TRUE allows primitives to be erased ERASE or redefined COPYDEF See ERASE page 57 COPYDEFT page 51 startup STARTUP variable if assigned a list value in a file loaded by LOAD that value is run as an instructionlist after the loading See LOAD page 63 unburyonedit UNBURYONEDIT variable if TRUE causes any procedure defined during EDIT or LOAD to be unburied so that it will be saved by a later SAVE Files that want to define and bury procedures must do it in that order See EDIT page 61 See LOAD page 63 See SAVE page 62 usealternatenames USEALTERNATENAMES variable if TRUE causes Logo to generate non English words from the Messages file instead of TRUE FALSE END etc Logo provides the following buried variables that can be used by programs logoversion LOGOVERSION variable a real number indicating the Logo version number e g 5 5 logoplatform LOGOPLATFORM variable one of the following words wxWidgets X11 Windows or Unix nographics Chapter 12 Internationalization 12 Internationalization Berkeley Logo has limited support for non English speaking users Alas there is no Unicode support and high bit on ASCII codes work in some contexts but not others If you want to translate Berkeley Logo for use with another language there are th
94. monitors that miss the top and left edges of the screen See SETCURSOR page 26 settextcolor SETTEXTCOLOR foreground background SETTC foreground background command wxWidgets only The inputs are color numbers or RGB color lists as for turtle graphics The foreground and background colors for the textscreen splitscreen text window are changed to the given values The change affects text already printed as well as future text printing there is only one text color for the entire window Command non wxWidgets Windows and DOS extended only The inputs are color num bers as for turtle graphics Future printing to the text window will use the specified colors for foreground the characters printed and background the space under those charac ters Using STANDOUT will revert to the default text window colors In the DOS extended ucblogo exe version colors in textscreen mode are limited to numbers 0 7 and the col oring applies only to text printed by the program not to the echoing of text typed by the user Neither limitation applies to the text portion of splitscreen mode which is actually drawn as graphics internally See STANDOUT page 17 increasefont INCREASEFONT DECREASEFONT command wxWidgets only Increase or decrease the size of the font used in the text and edit windows to the next larger or smaller available size settextsize SETTEXTSIZE height command wxWidgets only Set the point size of the
95. now how to proc not recoverable IFTRUE IFFALSE without TEST Unexpected Unexpected Couldn t initialize graphics Macro returned value instead of a list You don t say what to do with value Can only use STOP or OUTPUT inside a procedure APPLY doesn t like badthing as input END inside multi line instruction Really out of memory can t be caught user generated error message THROW ERROR message END inside multi line instruction Bad default expression for optional input expr Can t use OUTPUT or STOP inside RUNRESULT Assuming you meant FD 100 not FD100 or similar I can t open file filename File filename already open File filename not open Runlist expr expr has more than one expression Chapter 11 Special Variables 11 Special Variables Logo takes special action if any of the following variable names exists They follow the normal scoping rules so a procedure can locally set one of them to limit the scope of its effect Initially no variables exist except for ALLOWGETSET CASEIGNOREDP and UNBURYONEDIT which are TRUE and buried allowgetset ALLOWGETSET variable if TRUE indicates that an attempt to use a procedure that doesn t exist should be taken as an implicit getter or setter procedure setter if the first three letters of the name are SET for a variable of the same name without the SET if appropriate buttonact BUTTONACT variable if nonempty should be an instruction list that wil
96. ns its input if the most recent TEST instruction had a TRUE input The TEST must have been in the same procedure or a superprocedure iffalse IFFALSE instructionlist IFF instructionlist Chapter 8 Control Structures command Runs its input if the most recent TEST instruction had a FALSE input The TEST must have been in the same procedure or a superprocedure See TEST page 68 stop STOP command Ends the running of the procedure in which it appears Control is returned to the context in which that procedure was invoked The stopped procedure does not output a value output OUTPUT value OP value command Ends the running of the procedure in which it appears That procedure outputs the value value to the context in which it was invoked Don t be confused OUTPUT itself is a command but the procedure that invokes OUTPUT is an operation catch CATCH tag instructionlist command or operation Runs its second input Outputs if that instructionlist outputs If while running the instructionlist a THROW instruction is executed with a tag equal to the first input case insensitive comparison then the running of the instructionlist is terminated immediately In this case the CATCH outputs if a value input is given to THROW The tag must be a word If the tag is the word ERROR then any error condition that arises during the running of the instructionlist has the effect of THROW ERROR instead of printing an error message an
97. nsert varying data Four different forms of template can be used The most commonly used form for a template is explicit slot form or question mark form Example show map 2 3 4 5 4 9 16 25 Chapter 8 Control Structures In this example the MAP tool evaluated the template repeatedly with each of the members of the data list 2 3 4 5 substituted in turn for the question marks The same value was used for every question mark in a given evaluation Some tools allow for more than one datum to be substituted in parallel in these cases the slots are indicated by 1 for the first datum 2 for the second and so on show map word 71 72 71 a b c de f ada beb cfc If the template wishes to compute the datum number the form 1 is equivalent to 1 so 71 means the datum whose number is given in datum number 1 Some tools allow additional slot designations as shown in the individual descriptions The second form of template is the named procedure form If the template is a word rather than a list it is taken as the name of a procedure That procedure must accept a number of inputs equal to the number of parallel data slots provided by the tool the procedure is applied to all of the available data in order That is if data 1 through 73 are available the template PROC is equivalent to PROC 1 72 73 show map word a b c d e f ad be cf to dotprod a b
98. o COPYDEF This dialect uses MAKE order not NAME order See REDEFP page 91 SAVE page 62 PO page 56 POT page 57 7 2 Variable Definition make MAKE varname value command Assigns the value value to the variable named varname which must be a word Variable names are case insensitive If a variable with the same name already exists the value of that variable is changed If not a new global variable is created name NAME value varname library procedure command Same as MAKE but with the inputs in reverse order 92 BERKELEY LOGO 6 0 local LOCAL varname LOCAL varnamelist LOCAL varnamel varname2 command Accepts as inputs one or more words or a list of words A variable is created for each of these words with that word as its name The variables are local to the currently running procedure Logo variables follow dynamic scope rules a variable that is local to a procedure is available to any subprocedure invoked by that procedure The variables created by LOCAL have no initial value they must be assigned a value e g with MAKE before the procedure attempts to read their value See MAKE page 51 localmake LOCALMAKE varname value library procedure command Makes the named variable local like LOCAL and assigns it the given value like MAKE See LOCAL page 52 See MAKE page 51 thing THING varname quoted varname outputs the value of the variable whose name is the
99. o expression that invokes a macro that is one that begins with the name of a macro and outputs the the Logo expression into which the macro would translate the input expression macro localmake name value op local word namel apply make name value end show macroexpand localmake pi 3 14159 local pi apply make pi 3 14159 Chapter 10 Error Processing 10 Error Processing If an error occurs Logo takes the following steps First if there is an available variable named ERRACT Logo takes its value as an instructionlist and runs the instructions The operation ERROR may be used within the instructions once to examine the error condition If the instructionlist invokes PAUSE the error message is printed before the pause happens Certain errors are recoverable for one of those errors if the instructionlist outputs a value that value is used in place of the expression that caused the error If ERRACT invokes PAUSE and the user then invokes CONTINUE with an input that input becomes the output from PAUSE and therefore the output from the ERRACT instructionlist It is possible for an ERRACT instructionlist to produce an inappropriate value or no value where one is needed As a result the same error condition could recur forever because of this mechanism To avoid that danger if the same error condition occurs twice in a row from an ERRACT instructionlist without user interaction the message Erract loop
100. o to accept a procedure definition The procedure will be named procname and there must not already be a procedure by that name The inputs will be called inputl etc Any number of inputs are allowed including none Names of procedures and inputs are case insensitive Unlike every other Logo procedure TO takes as its inputs the actual words typed in the instruction line as if they were all quoted rather than the results of evaluating expressions to provide the inputs That s what special form means This version of Logo allows variable numbers of inputs to a procedure After the procedure name come four kinds of things in this order T O or more REQUIRED inputs F00 FROBOZZ 2 0 or more OPTIONAL inputs BAZ 87 THINGO 5 9 3 0 or 1 REST input GARPLY 4 O or 1 DEFAULT number 5 Every procedure has a minimum default and maximum number of inputs The latter can be infinite The minimum number of inputs is the number of required inputs which must come first A required input is indicated by the inputname notation After all the required inputs can be zero or more optional inputs each of which is represented by the following notation inputname default value expression When the procedure is invoked if actual inputs are not supplied for these optional inputs the default value expressions are evaluated to set values for the corresponding input names The inputs are processed from left to right so a default v
101. of the window The top edge wraps to the bottom edge while the left edge wraps to the right edge So the window is topologically equivalent to a torus This is the turtle s initial mode Compare WINDOW and FENCE See FENCE page 40 window WINDOW tells the turtle to enter window mode From now on if the turtle is asked to move past the boundary of the graphics window it will move offscreen The visible graphics window is considered as just part of an infinite graphics plane the turtle can be anywhere on the plane If you lose the turtle HOME will bring it back to the center of the window Compare WRAP and FENCE See HOME page 38 fence FENCE tells the turtle to enter fence mode From now on if the turtle is asked to move past the boundary of the graphics window it will move as far as it can and then stop at the edge with an out of bounds error message Compare WRAP and WINDOW Chapter 6 Graphics Al See WRAP page 40 fill FILL fills in a region of the graphics window containing the turtle and bounded by lines that have been drawn earlier This is not portable it doesn t work for all machines and may not work exactly the same way on different machines filled FILLED color instructions runs the instructions remembering all points visited by turtle motion commands starting and ending with the turtle s initial position Then draws ignoring penmode the result ing polygon in the current p
102. ogo allows the same word to name a procedure and a variable at the same time This is most often important for words that name data types as in the following procedure TO PLURAL WORD OUTPUT WORD WORD S END Here the name WORD is a natural choice for the input to PLURAL since it describes the kind of input that PLURAL expects Within the procedure we use WORD to represent Logo s primitive procedure that combines two input words to form a new longer word we use WORD to represent the variable containing the input whatever actual word is given when PLURAL is invoked PRINT PLURAL COMPUTER COMPUTERS However if a Logo instruction includes an unquoted word that is not the name of a proce dure Logo could look for a variable of that name instead This would allow a punctua tionless Logo provided that users who want to work without colons for variables choose variable names that are not also procedure names What about assigning a value to a variable Could we do without the quotation mark on MAKE s first input Alas no Although the first input to MAKE is usually a constant known variable name sometimes it isn t as in this example TO INCREMENT VAR MAKE VAR THING VAR 1 Note it s not VAR here END MAKE X 5 INCREMENT X PRINT X 6 The procedure INCREMENT takes a variable name as its input and changes the value of that variable In this example there are two variables the variable whose name is
103. oig SAR ae ae ee eee 29 Tadarctanys Sate dda Biss a eke Dae 31 TAUCOS s Malo Loa eek fA OMe Ree fis 31 TACSIN Mil a bak Cee oe ees 31 random dada a RAS be 32 TAWASCH SA ie ee es 16 TEs CRUE SAA Steet ih pide Slee hee 21 TOS ie See Pe te ose a Pe eee wa Tes 21 readchar 62 0 22 ici 21 read chars 4 4 0 ate el ea bia eee bi 21 POAC EP NES 25 Tead libro shee ded dai ad eae ee ered BAe 20 Ted POS eis rs ts eas eds dee 25 readrawline wes nc dhak neh i ke ee eh a dh es 20 re dword entere wee Seana etwas Cee done Shen 20 Tedelpsiecseveiew ss ashe een heehee ed 91 reducen a as A peaches aes 78 refresh vie hte Shed ee oaks hae te eh a e ES 42 remamder ee eteh rr tas 30 TO 12 TEMOVE aotea A AA 12 IN A ala racensts E oSe Gua al acs fine E aS ens 53 BERKELEY LOGO 6 0 TEP COUMU EE 68 TPC e alt e pb 67 o A e a a Si 33 reyerse i a A os 10 TAS EEE A E E 38 a E E E ENEE EEEE 20 A e a este a ee ae ee 30 TSEQ sr is fede ees 31 Thi eet jee eed tewet A 38 TUN sects hen ei ng hid oe ee eee as E A 2 alae 67 FUNDAS id 18 PUN parts inicia ia 6 PUNKS UG qeria ga a Been Se 67 A eae ele 4k ee eke eee oe Es 20 SAVE tc lce te ads its rete 62 Savel vile od rd oe ab 63 SAVEPICts nada eh 46 Screen de ar fae aie Meee ea vee aan 43 SCKUN Chie aen pie ig eT ee ee Te ES 39 scrunch label 42 SO ok ial d Materiel ni 9 sentence ida ee ebb ee bok es 9 setbackground K cece eee eee 45 A esis Ags eee ed hed e ete 45 s tcslslo s inicia a ER
104. on for the procedure then Logo signals an error Several procedures that are primitive in most versions of Logo are included in the default library so if you use a different library you may want to include some or all of the default library in it 1 4 Tokenization Names of procedures variables and property lists are case insensitive So are the special words END TRUE and FALSE Case of letters is preserved in everything you type however Within square brackets words are delimited only by spaces and square brackets 2 3 is a list containing one word Note however that the Logo primitives that interpret such a list as a Logo instruction or expression RUN IF etc reparse the list as if it had not been typed inside brackets After a quotation mark outside square brackets a word is delimited by a space a square bracket or a parenthesis A word not after a quotation mark or inside square brackets is delimited by a space a bracket a parenthesis or an infix operator lt gt Note that words following colons are in this category Note that quote and colon are not delimiters Each infix operator character is a word in itself except that the two character sequences lt gt and lt gt the latter meaning not equal with no intervening space are recognized as a single word A word consisting of a question mark followed by a number e g 737 when runparsed i e where a procedure name is expected is treated as if it w
105. or more instructions that do something rather than output a value depending on the context PRINT IFELSE X lt 0 NEGATIVE POSITIVE one value in each case REPEAT 4 PRINT A PRINT B two instructions run RUN instructionlist command or operation Runs the Logo instructions in the input list outputs if the list contains an expression that outputs See READWORD page 20 READLIST page 20 runresult RUNRESULT instructionlist runs the instructions in the input outputs an empty list if those instructions produce no output or a list whose only member is the output from running the input instructionlist Useful for inventing command or operation control structures local result make result runresult something if emptyp result stop output first result repeat REPEAT num instructionlist command Runs the instructionlist repeatedly num times forever FOREVER instructionlist command Runs the instructionlist repeatedly until something inside the instructionlist such as STOP or THROW makes it stop See STOP page 69 See THROW page 69 BERKELEY LOGO 6 0 repcount REPCOUNT outputs the repetition count of the innermost current REPEAT or FOREVER starting from 1 If no REPEAT or FOREVER is active outputs 1 The abbreviation can be used for REPCOUNT unless the REPEAT is inside the template input to a higher order procedure such as FOREACH in which case has a different meaning
106. p2 startval2 library procedure outputs the result of invoking CASCADE with the same inputs The only difference is that the default number of inputs is five instead of three transfer TRANSFER endtest template inbasket library procedure outputs the result of repeated evaluation of the template The template is evaluated once for each member of the list inbasket TRANSFER maintains an outbasket that is initially the empty list After each evaluation of the template the resulting value becomes the new outbasket In the template the symbol IN represents the current member from the inbasket the symbol 0UT represents the entire current outbasket Other slot symbols should not be used If the first endtest input is an empty list evaluation continues until all inbasket mem bers have been used If not the first input must be a predicate expression template and evaluation continues until either that template s value is TRUE or the inbasket is used up Chapter 9 Macros 9 Macros Macro MACRO procname inputi input2 special form DEFMACRO procname text A macro is a special kind of procedure whose output is evaluated as Logo instructions in the context of the macro s caller MACRO is exactly like TO except that the new procedure becomes a macro DEFMACRO is exactly like DEFINE with the same exception Macros are useful for inventing new control structures comparable to REPEAT IF and so on Such control structures can
107. pply word english inputs end make french predicate egal equal 2 pr egal 3 4 faux pr egal 4 4 vrai pr equal 3 4 false pr equal 4 4 Chapter 12 Internationalization true The third input to make french predicate is the number of inputs that the predicate ex pects This solution isn t quite perfect because the infix predicates lt gt will still output in English If you want them to generate alternate language words set UseAlternateNames to TRUE instead Some of the words in this section of the Messages file are names of Logo primitives OUTPUT STOP GOTO TAG IF IFELSE TO MACRO To translate these names you must use COPYDEF as described earlier in addition to changing the names in Messages You should be consistent in these two steps Don t forget the period in macro For documentation there are two kinds this manual and the help files The latter are generated automatically from this manual if you have a Unix system so in that case you need only translate this manual maintaining the format The automatic helpfile generator notices things like capital letters tabs hyphens and equal signs at the beginnings of lines The program makefile c may require modification because a few of the primitive names are special cases e g LOG10 is the only name with digits included If you don t have Unix tools you can just translate each helpfile individually A period in a
108. prop PPROP plistname propname value command Adds a property to the plistname property list with name propname and value value gprop GPROP plistname propname outputs the value of the propname property in the plistname property list or the empty list if there is no such property remprop REMPROP plistname propname command Removes the property named propname from the property list named plistname plist PLIST plistname outputs a list whose odd numbered members are the names and whose even numbered members are the values of the properties in the property list named plistname The output is a copy of the actual property list changing properties later will not magically change a list output earlier by PLIST 7 4 Workspace Predicates procedurep PROCEDUREP name PROCEDURE name outputs TRUE if the input is the name of a procedure primitivep PRIMITIVEP name PRIMITIVE name 54 BERKELEY LOGO 6 0 outputs TRUE if the input is the name of a primitive procedure one built into Logo Note that some of the procedures described in this document are library procedures not primitives definedp DEFINEDP name DEFINED name outputs TRUE if the input is the name of a user defined procedure including a library procedure namep NAMEP name NAME name outputs TRUE if the input is the name of a variable plistp PLISTP name PLIST name outputs TRUE if the input is the name of a nonempty property list In principle every
109. r of the array is member number 1 unless an origin input must be an integer is given in which case the first member of the array has that number as its index Typically 10 BERKELEY LOGO 6 0 0 is used as the origin if anything Arrays are printed by PRINT and friends and can be typed in inside curly braces indicate an origin with a b c 0 See ITEM page 12 SETITEM page 12 PRINT page 19 mdarray MDARRAY sizelist library procedure MDARRAY sizelist origin outputs a multi dimensional array The first input must be a list of one or more positive in tegers The second input if present must be a single integer that applies to every dimension of the array Ex MDARRAY 3 5 0 outputs a two dimensional array whose members range from O 0 to 2 4 listtoarray LISTTOARRAY list LISTTOARRAY list origin outputs an array of the same size as the input list whose members are the members of the input list arraytolist ARRAYTOLIST array outputs a list whose members are the members of the input array The first member of the output is the first member of the array regardless of the array s origin combine COMBINE thing1 thing2 library procedure if thing2 is a word outputs WORD thing1 thing2 If thing2 is a list outputs FPUT thing thing2 See WORD page 9 FPUT page 9 reverse REVERSE list library procedure outputs a list whose members are the members of the input list in reverse or
110. re the letters SET upper or lower case and if the name is followed in the instruction by another value and if the name without the SET is the name of a variable that already exists then Logo will invoke MAKE with its first input being the name without the SET and its second input being the following value 2 If step 1 s conditions are not met but the name is the name of an accessible variable then Logo will invoke THING with that name as input to find the variable s value Step 1 requires that the variable already exist so that misspellings of names of SETxxx primitives e g SETHEADING will still be caught instead of silently creating a new variable The command GLOBAL can be used to create a variable without giving it a value One final point The TO command in Logo has always been a special case the rest of the line starting with TO is not evaluated as ordinary Logo expressions are In particular the colons used to mark the names of inputs to the procedure do not cause THING to be invoked They are merely mnemonic aids reminding the Logo user that these words are names of variables Arguably this nonstantard behavior of TO adds to Logo beginners confusion about colons To a programmer using colonless variable references the colons in the TO line are unnecessary and meaningless Berkeley Logo therefore makes the colons optional TO FOO IN1 IN2 Chapter 1 Introduction 5 and TO FOO INi IN2 are both allowed 1
111. ree main things you have to do 1 Primitive names 2 Error and other messages 3 Documentation For primitive names the easiest thing is to provide a startup file that defines aliases for the English primitive names using COPYDEF COPYDEF AVANT FORWARD This should take care of it unless your language s name for one primitive is spelled like the English name of a different primitive In that case you have to turn REDEFP on and be sure to copy the non conflicting name before overwriting the conflicting one Primitives that are actually in the Logo library of course can just be replaced or aug mented with native language named Logo procedures and filenames Of course Logo programs will still not look like your native language if the word order is dramatically different especially if you don t put verbs before their objects For error messages there is a file named Messages in the logolib directory with texts of messages one per line You can replace this with a file for your own language Do not add delete or reorder lines Logo finds messages by line number The sequences p 48 and t in these messages represent variable parts of the message and should not be translated p PRINTS the variable part while s SHOWs it that is the difference is about whether or not brackets are shown surrounding a list t means that the variable part is a C text string rather than a Logo object If you want to change th
112. resents the input character in the ASCII code Interprets control characters as representing themselves To find out the ASCII code of an arbitrary keystroke use RAWASCII RC char CHAR int outputs the character represented in the ASCII code by the input which must be an integer between 0 and 255 See ASCII page 16 member MEMBER thingl thing2 if thing2 is a word or list and if MEMBERP with these inputs would output TRUE outputs the portion of thing2 from the first instance of thingl to the end If MEMBERP would output FALSE outputs the empty word or list according to the type of thing2 It is an error for thing2 to be an array See MEMBERP page 15 lowercase LOWERCASE word outputs a copy of the input word but with all uppercase letters changed to the corresponding lowercase letter uppercase UPPERCASE word outputs a copy of the input word but with all lowercase letters changed to the corresponding uppercase letter standout STANDOUT thing outputs a word that when printed will appear like the input but displayed in standout mode boldface reverse video or whatever your version does for standout The word contains machine specific magic characters at the beginning and end in between is the printed form as if displayed using TYPE of the input The output is always a word even if the input is of some other type but it may include spaces and other formatting characters Note a word output by STANDOUT w
113. resulting word In data read with READLIST or resulting from a PARSE or RUNPARSE of a word the vertical bars do not appear explicitly all potentially delimiting characters including spaces brackets parentheses and infix operators appear unmarked but tokenized as though they were letters Within vertical bars backslash may still be used the only characters that must be backslashed in this context are backslash and vertical bar themselves Characters entered between vertical bars are forever special even if the word or list contain ing them is later reparsed with PARSE or RUNPARSE Characters typed after a backslash are treated somewhat differently When a quoted word containing a backslashed character is runparsed the backslashed character loses its special quality and acts thereafter as if typed normally This distinction is important only if you are building a Logo expression out of parts to be RUN later and want to use parentheses For example PRINT RUN SE 2 3 will print 5 but RUN SE MAKE we 2 8 BERKELEY LOGO 6 0 will create a variable whose name is open parenthesis Each example would fail if vertical bars and backslashes were interchanged A normally delimiting character entered within vertical bars is EQUALP to the same character without the vertical bars but can be distinguished by the VBARREDP predicate However VBARREDP returns TRUE only for characters for which special treatment is necessary w
114. rocedure outputs a list containing the pen s position mode thickness and hardware specific charac teristics for use by SETPEN See SETPEN page 45 background BACKGROUND BG outputs the graphics background color either as a slot number or as an RGB list whichever way it was set See PENCOLOR 6 7 Saving and Loading Pictures savepict SAVEPICT filename command Writes a file with the specified name containing the state of the graphics window including any nonstandard color palette settings in Logo s internal format This picture can be restored to the screen using LOADPICT The format is not portable between platforms nor is it readable by other programs EPSPICT page 47 to export Logo graphics for other programs loadpict LOADPICT filename Chapter 6 Graphics command Reads the specified file which must have been written by a SAVEPICT command and restores the graphics window and color palette settings to the values stored in the file Any drawing previously on the screen is cleared See SAVEPICT page 46 epspict EPSPICT filename command Writes a file with the specified name containing an Encapsulated Postscript EPS representation of the state of the graphics window This file can be imported into other programs that understand EPS format Restrictions the drawing cannot use FILL PENERASE or PENREVERSE any such instructions will be ignored in the translation to Post script form See
115. round it but brackets are printed around sublists Braces are always printed around arrays type TYPE thing TYPE thing1 thing2 command Prints the input or inputs like PRINT except that no newline character is printed at the end and multiple inputs are not separated by spaces Note printing to the screen is ordinarily line buffered that is the characters you print using TYPE will not actually appear on the screen until either a newline character is printed for example by PRINT or SHOW or Logo tries to read from the keyboard either at the request of your program or after an instruction prompt This buffering makes the program much faster than it would be if each character appeared immediately and in most cases the effect is not disconcerting To 20 BERKELEY LOGO 6 0 accommodate programs that do a lot of positioned text display using TYPE Logo will force printing whenever SETCURSOR is invoked This solves most buffering problems Still on occasion you may find it necessary to force the buffered characters to be printed explicitly this can be done using the WAIT command WAIT 0 will force printing without actually waiting See SETCURSOR page 26 WAIT page 71 show SHOW thing SHOW thing1 thing2 command Prints the input or inputs like PRINT except that if an input is a list it is printed inside square brackets See PRINT page 19 3 2 Receivers readlist READLIST RL reads a line from the rea
116. rt reading from the beginning of the file Meaningless if the read stream is the keyboard See READLIST page 20 setwritepos SETWRITEPOS charpos command Sets the file pointer of the write stream file so that the next PRINT etc will begin writing at the charposth character in the file counting from 0 That is SETWRITEPOS 0 will start writing from the beginning of the file Meaningless if the write stream is the screen See PRINT page 19 readpos READPOS outputs the file position of the current read stream file writepos WRITEPOS outputs the file position of the current write stream file eofp EOFP EOF predicate outputs TRUE if there are no more characters to be read in the read stream file FALSE otherwise 26 BERKELEY LOGO 6 0 filep FILEP filename FILE filename library procedure predicate outputs TRUE if a file of the specified name exists and can be read FALSE other wise 3 4 Terminal Access keyp KEYP KEY predicate outputs TRUE if there are characters waiting to be read from the read stream If the read stream is a file this is equivalent to NOT EOFP If the read stream is the terminal then echoing is turned off and the terminal is set to cbreak character at a time instead of line at a time mode It remains in this mode until some line mode reading is requested e g READLIST The Unix operating system forgets about any pending characters when it switches modes so the firs
117. s of the input are equal the rightmost of those members is the one that remains in the output quoted QUOTED thing library procedure outputs its input if a list outputs its input with a quotation mark prepended if a word 2 3 Data Mutators setitem SETITEM index array value Chapter 2 Data Structure Primitives 13 command Replaces the indexth member of array with the new value Ensures that the resulting array is not circular i e value may not be a list or array that contains array mdsetitem MDSETITEM indexlist array value library procedure command Replaces the member of array chosen by indexlist with the new value setfirst SETFIRST list value command Changes the first member of list to be value WARNING Primitives whose names start with a period are dangerous Their use by non experts is not recommended The use of SETFIRST can lead to circular list structures which will get some Logo primitives into infinite loops and to unexpected changes to other data structures that share storage with the list being modified setbf SETBF list value command Changes the butfirst of list to be value WARNING Primitives whose names start with a period are dangerous Their use by non experts is not recommended The use of SETBF can lead to circular list structures which will get some Logo primitives into infinite loops unexpected changes to other data structures that share storage with the list being modified
118. save SAVE filename command Saves the definitions of all unburied procedures variables and nonempty prop erty lists in the named file Equivalent to Chapter 7 Workspace Management to save filename local oldwriter make oldwriter writer openwrite filename setwrite filename poall setwrite oldwriter close filename end Exceptionally SAVE can be used with no input and without parentheses if it is the last thing on the command line In this case the filename from the most recent LOAD or SAVE command will be used It is an error if there has been no previous LOAD or SAVE savel SAVEL contentslist filename library procedure command Saves the definitions of the procedures variables and property lists specified by contentslist to the file named filename load LOAD filename command Reads instructions from the named file and executes them The file can include procedure definitions with TO and these are accepted even if a procedure by the same name already exists If the file assigns a list value to a variable named STARTUP then that list is run as an instructionlist after the file is loaded If there is a variable LOADNOISILY whose value is TRUE then TO commands in the file print procname defined where procname is the name of the procedure being defined if LOADNOISILY is FALSE or undefined TO commands in the file are carried out silently See STARTUP page 91 See LOADNOISILY page 90 cslslo
119. sed If you need the same sequence of pseudo random numbers repeatedly e g to debug a program say RERANDOM before the first invocation of RANDOM If you need more than one repeatable sequence you can give RERANDOM an integer input each possible input selects a unique sequence of numbers 4 4 Print Formatting form FORM num width precision outputs a word containing a printable representation of num possibly preceded by spaces and therefore not a number for purposes of performing arithmetic operations with at least width characters including exactly precision digits after the decimal point If precision is 0 then there will be no decimal point in the output As a debugging feature FORM num 1 format will print the floating point num according to the C printf format to allow to hex num op form num 1 08X 08X end to allow finding out the exact result of floating point operations The precise format needed may be machine dependent 4 5 Bitwise Operations bitand BITAND numi num2 BITAND numi num2 num3 outputs the bitwise and of its inputs which must be integers See AND page 35 bitor BITOR numi num2 BITOR numi num2 num3 outputs the bitwise or of its inputs which must be integers See OR page 35 bitxor BITXOR numi num2 BERKELEY LOGO 6 0 BITXOR num1 num2 num3 outputs the bitwise exclusive or of its inputs which must be integers See OR page 35 bitnot BITNOT
120. stinguishes procedures from variables A procedure is a set of instructions to carry out some computation a variable is a named container that holds a data value such as a number word list or array In traditional Logo syntax a non numeric word typed without punctuation represents a request to invoke the procedure named by that word A word typed with a preceding quotation mark represents the word itself For example in the instruction PRINT FIRST WORD the procedures named FIRST and PRINT are invoked but the procedure named WORD is not invoked the word W O R D is the input to FIRST What about variables There are two things one can do with a variable give it a value and find out its value To give a variable a value Logo provides the primitive procedure MAKE which requires two inputs the name of the variable and the new value to be assigned The first input the name of the variable is just a word and if as is almost always the case the programmer wants to assign a value to a specific variable whose name is known in advance that input is quoted just as any known specific word would be MAKE MY VAR FIRST WORD gives the variable named MY VAR the value W the first letter of WORD To find the value of a variable Logo provides the primitive procedure THING which takes a variable name as its input and outputs the value of the accessible variable with that name Thus PRINT THING MY VAR will print W supposing the MAKE
121. t KEYP invocation will always output FALSE See EOFP page 25 READLIST page 20 cleartext CLEARTEXT CT command Clears the text window setcursor SETCURSOR vector command The input is a list of two numbers the x and y coordinates of a text window position origin in the upper left corner positive direction is southeast The text cursor is moved to the requested position This command also forces the immediate printing of any buffered characters cursor CURSOR outputs a list containing the current x and y coordinates of the text cursor Logo may get confused about the current cursor position if e g you type in a long line that wraps around or your program prints escape codes that affect the screen strangely setmargins SETMARGINS vector command The input must be a list of two numbers as for SETCURSOR The effect is to clear the screen and then arrange for all further printing to be shifted down and to the right according to the indicated margins Specifically every time a newline character is Chapter 3 Communication 27 printed explicitly or implicitly Logo will type x_margin spaces and on every invocation of SETCURSOR the margins will be added to the input x and y coordinates CURSOR will report the cursor position relative to the margins so that this shift will be invisible to Logo programs The purpose of this command is to accommodate the display of terminal screens in lecture halls with inadequate TV
122. t is a list then its first element must be a variable name and its second and last element must be a positive integer a buffer of that many characters will be allocated and will become the writestream If the same list same in the EQ sense not a copy has been used as input to OPENWRITE then the already allocated buffer will be used and the writer can be changed to and from this buffer with all the characters accumulated as in a file When the same list is used as input to CLOSE the contents of the buffer as an unparsed word which may contain newline characters will become the value of the named variable For compatibility with earlier versions if the list has not been opened when the SETWRITE is done it will be opened implicitly but the first SETWRITE after this one will implicitly close it setting the variable and freeing the allocated buffer See PRINT page 19 OPENWRITE page 22 OPENAPPEND page 23 OPENUP DATE page 23 Chapter 3 Communication 25 reader READER outputs the name of the current read stream file or the empty list if the read stream is the terminal writer WRITER outputs the name of the current write stream file or the empty list if the write stream is the screen setreadpos SETREADPOS charpos command Sets the file pointer of the read stream file so that the next READLIST etc will begin reading at the charposth character in the file counting from 0 That is SETREADPOS 0 will sta
123. t to the left and 72 with the result from the previous evaluation This process continues until all constituents have been used The data input may not be empty Note If the template is like SUM the name of a procedure that is capable of accepting arbitrarily many inputs it is more efficient to use APPLY instead of REDUCE The latter is good for associative procedures that have been written to accept exactly two inputs to max a b output ifelse a gt b a b end print reduce max Alternatively REDUCE can be used to write MAX as a procedure that accepts any number of inputs as SUM does to max inputs 2 if emptyp inputs Cthrow error not enough inputs to max output reduce ifelse 1 gt 2 71 211 inputs end See SUM page 29 APPLY page 76 crossmap CROSSMAP template listlist library procedure CROSSMAP template datal data2 outputs a list containing the results of template evaluations Each data list contributes to a slot in the template the number of slots is equal to the number of data list inputs As a special case if only one data list input is given that list is taken as a list of data lists and each of its members contributes values to a slot CROSSMAP differs from MAP in that instead of taking members from the data inputs in parallel it takes all possible combinations of members of data inputs which need not be the same length show crossmap word 1 72 a b c 1
124. tes 0 00 cece cence eee e ees 53 PLOCed rep EE EIAS EEEE ee a A teat Steg 53 PENO Piste es 3d AI oe 53 defied ps anerian a atada 54 A EEEE IE E E E O E E E Hanae 54 PUSE AA a uaa A AO 54 7 5 Workspace QQueriesS ocooocccccoocccccnonncr or 54 COMEN res ia A 54 DU a a a e le die Ol 54 DEACERO peels aad eae bales 54 E ee GEARS 54 PLOCECULES escitas Rib Gn Ree UA A 55 PYUMIIVES Ar E eae ae Ae a ee a oe eee eee eit eed 55 Hames A ARA RA ch ay AARE OAE 55 PASEA da Dan 55 nammelist isse a it dob bees 55 Pla sia 55 OLY sist hee eee tae Ash ett th it eed aaah Weed eect hn bee esha 55 HOdes nai li a aaa 56 7 6 Workspace Inspection 00 cece cece rr 56 PO ene states ties Pe ale GD fw Stacie Sea eed arab ae ea 56 PO a eae tale ae kod lariat Ue de ia 56 POP AAA ia 56 PONS cet os eet eae a eS See te Ree ee hick ae 56 POPIS A 57 DOM Ascent EE Seas hae ie ors is ea eee ES aN Ue Ba 57 POP A ade afta emer anes Mate Wk Soe tae 57 DOr ae AAA A ee tte A e 57 7 7 Workspace Control 0 00 cece cence nee een neee 57 CT ASE Mire eae A a ee aA 57 CLAM ts he A A o 58 PP AAA AAA A drach Meee abate 58 EOS A AAA oe eae A A tea Rae oe TAA E Sa 58 PIS ra a dh toe eam Ses oda at dd ead ee ole daha tees 58 CIN heeds enlaces cides wand pote teeta Amu ease a Moreen 58 CLP aegis age O atte tek ee bate eed 58 DUI A Se ead Lot ne eae ade 59 A ea tans idee adh aie Saeed a ead ed te Ok 59 DU DAME sesira eg dee eee ee vada isa 59 U
125. the template is evaluated zero times the output from CASCADE is the third startvalue input Otherwise the output is the value produced by the last template evaluation CASCADE templates may include the symbol to represent the number of times the template has been evaluated This slot is filled with 1 for the first evaluation 2 for the second and so on show cascade 5 lput 7 1 2 3 4 5 show cascade vowelp first bf spring ing show cascade 5 7 1 120 Several cascaded results can be computed in parallel by providing additional template startvalue pairs as inputs to CASCADE In this case all templates including the endtest template if used are multi slot with the number of slots equal to the number of pairs of inputs In each round of evaluations 2 for example represents the result of evaluating the second template in the previous round If the total number of inputs including the first endtest input is odd then the output from CASCADE is the final value of the first template If the total number of inputs is even then the last input is a template that is evaluated once after the end test is satisfied to determine the output from CASCADE to fibonacci n output cascade n 1 72 1 71 0 end to piglatin word output cascade vowelp first word bf first 7 word word ay end Chapter 8 Control Structures 8 amp 1 cascade 2 CASCADE 2 endtest temp1 startval1 tem
126. ur operating system setcslsloc SETCSLSLOC path command Tells Logo to use the specified directory for the CSLSLOAD command instead of the default directory The format of a path depends on your operating system See CSLSLOAD page 63 sethelploc SETHELPLOC path command Tells Logo to look in the specified directory for the information provided by the HELP command instead of the default directory The format of a path depends on your operating system settemploc SETTEMPLOC path command Tells Logo to write editor temporary files in the specified directory rather than in the default directory You must have write permission for this directory The format of a path depends on your operating system gc GC GC anything command Runs the garbage collector reclaiming unused nodes Logo does this when necessary anyway but you may want to use this command to control exactly when Logo does it In particular the numbers output by the NODES operation will not be very meaningful Chapter 7 Workspace Management unless garbage has been collected Another reason to use GC is that a garbage collection takes a noticeable fraction of a second and you may want to schedule collections for times before or after some time critical animation If invoked with an argument of any value GC runs a full garbage collection including GCTWA Garbage Collect Truly Worthless Atoms which means that it removes from Logo s memory words that used to
127. ure text form The named slot form can be understood as telling Logo to evaluate the expression x 3 in place of the entire invocation of apply with the variable x temporarily given the value 5 The procedure text form can be understood as invoking the procedure to foo x output x 3 end with input 5 but without actually giving the procedure a name If the use of OUTPUT were interchanged in these two examples we d get errors print apply Lx output x 3 5 Can only use output inside a procedure print apply x x 3 5 You don t say what to do with 8 The named slot form can be used with STOP or OUTPUT inside a procedure to stop the enclosing procedure The following iteration tools are extended versions of the ones in Appendix B of the book Computer Science Logo Style Volume 3 Advanced Topics by Brian Harvey MIT Press 1987 The extensions are primarily to allow for variable numbers of inputs apply APPLY template inputlist command or operation Runs the template filling its slots with the members of inputlist The number of members in inputlist must be an acceptable number of slots for template It is illegal to apply the primitive TO as a template but anything else is okay APPLY outputs what template outputs if anything See TO page 49 invoke INVOKE template input library procedure INVOKE template inputi input2 command or operation Exactly like APPLY except that the inputs are provid
128. word READRAWLINE Chapter 3 Communication 21 outputs the exact string of characters as they appear in the line with no special meaning for backslash vertical bar tilde or any other formatting characters See READWORD page 20 readchar READCHAR RC reads a single character from the read stream and outputs that character as a word If the read stream is a file and the end of file is reached READCHAR outputs the empty list not the empty word If the read stream is the keyboard echoing is turned off when READCHAR is invoked and remains off until READLIST or READWORD is invoked or a Logo prompt is printed Backslash vertical bar and tilde characters have no special meaning in this context See READLIST page 20 readchars READCHARS num RCS num reads num characters from the read stream and outputs those characters as a word If the read stream is a file and the end of file is reached READCHARS outputs the empty list not the empty word If the read stream is the keyboard echoing is turned off when READCHARS is invoked and remains off until READLIST or READWORD is invoked or a Logo prompt is printed Backslash vertical bar and tilde characters have no special meaning in this context See READLIST page 20 READWORD page 20 shell SHELL command SHELL command wordflag Under Unix outputs the result of running command as a shell command The command is sent to bin sh not csh or oth
129. would otherwise not be treated as part of a word are printed with the backslashes or vertical bars shown so that the printed result could be re read by Logo to produce the same value If FULLPRINTP is TRUE then the empty word however it was created prints as Otherwise it prints as nothing at all keyact KEYACT variable if nonempty should be an instruction list that will be evaluated whenever a key is pressed on the keyboard The instruction list can use READCHAR to find out what key was pressed Note that only keys that produce characters qualify pressing SHIFT or CONTROL alone will not cause KEYACT to be evaluated Note that it s possible for the user to press a key during the evaluation of the instruction list If this would confuse your program prevent it by temporarily setting KEYACT to the empty list One easy way to do that is the following make keyact key action to key action keyact whatever you want the key to do end loadnoisily LOADNOISILY variable if TRUE prints the names of procedures defined when loading from a file including the temporary file made by EDIT See EDIT page 61 printdepthlimit PRINTDEPTHLIMIT variable if a nonnegative integer indicates the maximum depth of sublist structure that will be printed by PRINT etc See PRINT page 19 printwidthlimit PRINTWIDTHLIMIT variable Chapter 11 Special Variables 91 if a nonnegative integer indicates the maximu
Download Pdf Manuals
Related Search
Related Contents
CSV-E77 Gebrauchsanleitung Instructions for use Mode d`emploi 取扱説明書 PDF 取扱説明書 - KAWAJUN 実施事項の詳細については、こちらからご確認ください。 Samsung MAX-DC995 Manual de Usuario Osram 73238 APM AAIP-W610H User's Manual Copyright © All rights reserved.
Failed to retrieve file