diff options
author | elioat <elioat@tilde.institute> | 2023-08-23 07:52:19 -0400 |
---|---|---|
committer | elioat <elioat@tilde.institute> | 2023-08-23 07:52:19 -0400 |
commit | 562a9a52d599d9a05f871404050968a5fd282640 (patch) | |
tree | 7d3305c1252c043bfe246ccc7deff0056aa6b5ab /js/games/nluqo.github.io/~bh/docs | |
parent | 5d012c6c011a9dedf7d0a098e456206244eb5a0f (diff) | |
download | tour-562a9a52d599d9a05f871404050968a5fd282640.tar.gz |
*
Diffstat (limited to 'js/games/nluqo.github.io/~bh/docs')
-rw-r--r-- | js/games/nluqo.github.io/~bh/docs/html/usermanual.html | 12160 |
1 files changed, 12160 insertions, 0 deletions
diff --git a/js/games/nluqo.github.io/~bh/docs/html/usermanual.html b/js/games/nluqo.github.io/~bh/docs/html/usermanual.html new file mode 100644 index 0000000..39a6002 --- /dev/null +++ b/js/games/nluqo.github.io/~bh/docs/html/usermanual.html @@ -0,0 +1,12160 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<title>BERKELEY LOGO 6.2</title> + +<meta name="description" content="BERKELEY LOGO 6.2"> +<meta name="keywords" content="BERKELEY LOGO 6.2"> +<meta name="resource-type" content="document"> +<meta name="distribution" content="global"> +<meta name="Generator" content="makeinfo"> +<link href="usermanual.html#Top" rel="start" title="Top"> +<link href="usermanual.html#INDEX" rel="index" title="INDEX"> +<link href="usermanual.html#SEC_Contents" rel="contents" title="Table of Contents"> +<link href="https://people.eecs.berkeley.edu/~bh/docs/html/dir.html#Top" rel="up" title="(dir)"> +<style type="text/css"> +<!-- +a.summary-letter {text-decoration: none} +blockquote.indentedblock {margin-right: 0em} +blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} +blockquote.smallquotation {font-size: smaller} +div.display {margin-left: 3.2em} +div.example {margin-left: 3.2em} +div.lisp {margin-left: 3.2em} +div.smalldisplay {margin-left: 3.2em} +div.smallexample {margin-left: 3.2em} +div.smalllisp {margin-left: 3.2em} +kbd {font-style: oblique} +pre.display {font-family: inherit} +pre.format {font-family: inherit} +pre.menu-comment {font-family: serif} +pre.menu-preformatted {font-family: serif} +pre.smalldisplay {font-family: inherit; font-size: smaller} +pre.smallexample {font-size: smaller} +pre.smallformat {font-family: inherit; font-size: smaller} +pre.smalllisp {font-size: smaller} +span.nolinebreak {white-space: nowrap} +span.roman {font-family: initial; font-weight: normal} +span.sansserif {font-family: sans-serif; font-weight: normal} +ul.no-bullet {list-style: none} +--> +</style> + + +</head> + +<body lang="en"> +<h1 class="settitle" align="center">BERKELEY LOGO 6.2</h1> + + + + + + + +<a name="SEC_Overview"></a> +<h2 class="shortcontents-heading">Short Table of Contents</h2> + +<div class="shortcontents"> +<ul class="no-bullet"> +<li><a name="stoc-Introduction" href="usermanual.html#toc-Introduction">1 Introduction</a></li> +<li><a name="stoc-Data-Structure-Primitives" href="usermanual.html#toc-Data-Structure-Primitives">2 Data Structure Primitives</a></li> +<li><a name="stoc-Objects" href="usermanual.html#toc-Objects">3 Objects</a></li> +<li><a name="stoc-Communication" href="usermanual.html#toc-Communication">4 Communication</a></li> +<li><a name="stoc-Arithmetic" href="usermanual.html#toc-Arithmetic">5 Arithmetic</a></li> +<li><a name="stoc-Logical-Operations" href="usermanual.html#toc-Logical-Operations">6 Logical Operations</a></li> +<li><a name="stoc-Graphics" href="usermanual.html#toc-Graphics">7 Graphics</a></li> +<li><a name="stoc-Workspace-Management" href="usermanual.html#toc-Workspace-Management">8 Workspace Management</a></li> +<li><a name="stoc-Control-Structures" href="usermanual.html#toc-Control-Structures">9 Control Structures</a></li> +<li><a name="stoc-Macros" href="usermanual.html#toc-Macros">10 Macros</a></li> +<li><a name="stoc-Error-Processing" href="usermanual.html#toc-Error-Processing">11 Error Processing</a></li> +<li><a name="stoc-Special-Variables" href="usermanual.html#toc-Special-Variables">12 Special Variables</a></li> +<li><a name="stoc-Internationalization" href="usermanual.html#toc-Internationalization">13 Internationalization</a></li> +<li><a name="stoc-INDEX-1" href="usermanual.html#toc-INDEX-1">INDEX</a></li> + +</ul> +</div> + +<a name="SEC_Contents"></a> +<h2 class="contents-heading">Table of Contents</h2> + +<div class="contents"> +<ul class="no-bullet"> +<li><a name="toc-Introduction" href="usermanual.html#INTRODUCTION">1 Introduction</a> +<ul class="no-bullet"> + <li><a name="toc-Overview" href="usermanual.html#OVERVIEW">1.1 Overview</a></li> + <li><a name="toc-Getter_002fSetter-Variable-Syntax" href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX">1.2 Getter/Setter Variable Syntax</a></li> + <li><a name="toc-Entering-and-Leaving-Logo" href="usermanual.html#ENTERING-AND-LEAVING-LOGO">1.3 Entering and Leaving Logo</a></li> + <li><a name="toc-Tokenization" href="usermanual.html#TOKENIZATION">1.4 Tokenization</a></li> +</ul></li> +<li><a name="toc-Data-Structure-Primitives" href="usermanual.html#DATA-STRUCTURE-PRIMITIVES">2 Data Structure Primitives</a> +<ul class="no-bullet"> + <li><a name="toc-Constructors" href="usermanual.html#CONSTRUCTORS">2.1 Constructors</a> + <ul class="no-bullet"> + <li><a name="toc-word" href="usermanual.html#WORD">word</a></li> + <li><a name="toc-list" href="usermanual.html#LIST">list</a></li> + <li><a name="toc-sentence" href="usermanual.html#SENTENCE">sentence</a></li> + <li><a name="toc-fput" href="usermanual.html#FPUT">fput</a></li> + <li><a name="toc-lput" href="usermanual.html#LPUT">lput</a></li> + <li><a name="toc-array" href="usermanual.html#ARRAY">array</a></li> + <li><a name="toc-mdarray" href="usermanual.html#MDARRAY">mdarray</a></li> + <li><a name="toc-listtoarray" href="usermanual.html#LISTTOARRAY">listtoarray</a></li> + <li><a name="toc-arraytolist" href="usermanual.html#ARRAYTOLIST">arraytolist</a></li> + <li><a name="toc-combine" href="usermanual.html#COMBINE">combine</a></li> + <li><a name="toc-reverse" href="usermanual.html#REVERSE">reverse</a></li> + <li><a name="toc-gensym" href="usermanual.html#GENSYM">gensym</a></li> + </ul></li> + <li><a name="toc-Data-Selectors" href="usermanual.html#SELECTORS">2.2 Data Selectors</a> + <ul class="no-bullet"> + <li><a name="toc-first" href="usermanual.html#FIRST">first</a></li> + <li><a name="toc-firsts" href="usermanual.html#FIRSTS">firsts</a></li> + <li><a name="toc-last" href="usermanual.html#LAST">last</a></li> + <li><a name="toc-butfirst" href="usermanual.html#BUTFIRST">butfirst</a></li> + <li><a name="toc-butfirsts" href="usermanual.html#BUTFIRSTS">butfirsts</a></li> + <li><a name="toc-butlast" href="usermanual.html#BUTLAST">butlast</a></li> + <li><a name="toc-item" href="usermanual.html#ITEM">item</a></li> + <li><a name="toc-mditem" href="usermanual.html#MDITEM">mditem</a></li> + <li><a name="toc-pick" href="usermanual.html#PICK">pick</a></li> + <li><a name="toc-remove" href="usermanual.html#REMOVE">remove</a></li> + <li><a name="toc-remdup" href="usermanual.html#REMDUP">remdup</a></li> + <li><a name="toc-quoted" href="usermanual.html#QUOTED">quoted</a></li> + </ul></li> + <li><a name="toc-Data-Mutators" href="usermanual.html#MUTATORS">2.3 Data Mutators</a> + <ul class="no-bullet"> + <li><a name="toc-setitem" href="usermanual.html#SETITEM">setitem</a></li> + <li><a name="toc-mdsetitem" href="usermanual.html#MDSETITEM">mdsetitem</a></li> + <li><a name="toc-_002esetfirst" href="usermanual.html#dSETFIRST">.setfirst</a></li> + <li><a name="toc-_002esetbf" href="usermanual.html#dSETBF">.setbf</a></li> + <li><a name="toc-_002esetitem" href="usermanual.html#dSETITEM">.setitem</a></li> + <li><a name="toc-push" href="usermanual.html#PUSH">push</a></li> + <li><a name="toc-pop" href="usermanual.html#POP">pop</a></li> + <li><a name="toc-queue" href="usermanual.html#QUEUE">queue</a></li> + <li><a name="toc-dequeue" href="usermanual.html#DEQUEUE">dequeue</a></li> + </ul></li> + <li><a name="toc-Predicates" href="usermanual.html#PREDICATES">2.4 Predicates</a> + <ul class="no-bullet"> + <li><a name="toc-wordp" href="usermanual.html#WORDP">wordp</a></li> + <li><a name="toc-listp" href="usermanual.html#LISTP">listp</a></li> + <li><a name="toc-arrayp" href="usermanual.html#ARRAYP">arrayp</a></li> + <li><a name="toc-emptyp" href="usermanual.html#EMPTYP">emptyp</a></li> + <li><a name="toc-equalp" href="usermanual.html#EQUALP">equalp</a></li> + <li><a name="toc-notequalp" href="usermanual.html#NOTEQUALP">notequalp</a></li> + <li><a name="toc-beforep" href="usermanual.html#BEFOREP">beforep</a></li> + <li><a name="toc-_002eeq" href="usermanual.html#dEQ">.eq</a></li> + <li><a name="toc-memberp" href="usermanual.html#MEMBERP">memberp</a></li> + <li><a name="toc-substringp" href="usermanual.html#SUBSTRINGP">substringp</a></li> + <li><a name="toc-numberp" href="usermanual.html#NUMBERP">numberp</a></li> + <li><a name="toc-vbarredp" href="usermanual.html#VBARREDP">vbarredp</a></li> + </ul></li> + <li><a name="toc-Queries" href="usermanual.html#QUERIES">2.5 Queries</a> + <ul class="no-bullet"> + <li><a name="toc-count" href="usermanual.html#COUNT">count</a></li> + <li><a name="toc-ascii" href="usermanual.html#ASCII">ascii</a></li> + <li><a name="toc-rawascii" href="usermanual.html#RAWASCII">rawascii</a></li> + <li><a name="toc-char" href="usermanual.html#CHAR">char</a></li> + <li><a name="toc-member" href="usermanual.html#MEMBER">member</a></li> + <li><a name="toc-lowercase" href="usermanual.html#LOWERCASE">lowercase</a></li> + <li><a name="toc-uppercase" href="usermanual.html#UPPERCASE">uppercase</a></li> + <li><a name="toc-standout" href="usermanual.html#STANDOUT">standout</a></li> + <li><a name="toc-parse" href="usermanual.html#PARSE">parse</a></li> + <li><a name="toc-runparse" href="usermanual.html#RUNPARSE">runparse</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Objects" href="usermanual.html#OBJECTS">3 Objects</a> +<ul class="no-bullet"> + <li><a name="toc-Constructors-1" href="usermanual.html#OBJECT-CONSTRUCTORS">3.1 Constructors</a> + <ul class="no-bullet"> + <li><a name="toc-kindof" href="usermanual.html#KINDOF">kindof</a></li> + <li><a name="toc-something" href="usermanual.html#SOMETHING">something</a></li> + <li><a name="toc-oneof" href="usermanual.html#ONEOF">oneof</a></li> + </ul></li> + <li><a name="toc-Mutators" href="usermanual.html#OBJECT-MUTATORS">3.2 Mutators</a> + <ul class="no-bullet"> + <li><a name="toc-exist" href="usermanual.html#EXIST">exist</a></li> + <li><a name="toc-have" href="usermanual.html#HAVE">have</a></li> + <li><a name="toc-havemake" href="usermanual.html#HAVEMAKE">havemake</a></li> + </ul></li> + <li><a name="toc-selectors" href="usermanual.html#OBJECT-SELECTORS">3.3 selectors</a> + <ul class="no-bullet"> + <li><a name="toc-self" href="usermanual.html#SELF">self</a></li> + <li><a name="toc-parents" href="usermanual.html#PARENTS">parents</a></li> + <li><a name="toc-mynames" href="usermanual.html#MYNAMES">mynames</a></li> + <li><a name="toc-mynamep" href="usermanual.html#MYNAMEP">mynamep</a></li> + <li><a name="toc-myprocs" href="usermanual.html#MYPROCS">myprocs</a></li> + <li><a name="toc-myprocp" href="usermanual.html#MYPROCP">myprocp</a></li> + </ul></li> + <li><a name="toc-Messages" href="usermanual.html#MESSAGES">3.4 Messages</a> + <ul class="no-bullet"> + <li><a name="toc-talkto" href="usermanual.html#TALKTO">talkto</a></li> + <li><a name="toc-ask" href="usermanual.html#ASK">ask</a></li> + </ul></li> + <li><a name="toc-Queries-1" href="usermanual.html#OBJECT-QUERIES">3.5 Queries</a> + <ul class="no-bullet"> + <li><a name="toc-whosename" href="usermanual.html#WHOSENAME">whosename</a></li> + <li><a name="toc-whoseproc" href="usermanual.html#WHOSEPROC">whoseproc</a></li> + </ul></li> + <li><a name="toc-usual" href="usermanual.html#USUAL">3.6 usual</a></li> +</ul></li> +<li><a name="toc-Communication" href="usermanual.html#COMMUNICATION">4 Communication</a> +<ul class="no-bullet"> + <li><a name="toc-Transmitters" href="usermanual.html#TRANSMITTERS">4.1 Transmitters</a> + <ul class="no-bullet"> + <li><a name="toc-print" href="usermanual.html#PRINT">print</a></li> + <li><a name="toc-type" href="usermanual.html#TYPE">type</a></li> + <li><a name="toc-show" href="usermanual.html#SHOW">show</a></li> + </ul></li> + <li><a name="toc-Receivers" href="usermanual.html#RECEIVERS">4.2 Receivers</a> + <ul class="no-bullet"> + <li><a name="toc-readlist" href="usermanual.html#READLIST">readlist</a></li> + <li><a name="toc-readword" href="usermanual.html#READWORD">readword</a></li> + <li><a name="toc-readrawline" href="usermanual.html#READRAWLINE">readrawline</a></li> + <li><a name="toc-readchar" href="usermanual.html#READCHAR">readchar</a></li> + <li><a name="toc-readchars" href="usermanual.html#READCHARS">readchars</a></li> + <li><a name="toc-shell" href="usermanual.html#SHELL">shell</a></li> + </ul></li> + <li><a name="toc-File-Access" href="usermanual.html#FILE-ACCESS">4.3 File Access</a> + <ul class="no-bullet"> + <li><a name="toc-setprefix" href="usermanual.html#SETPREFIX">setprefix</a></li> + <li><a name="toc-prefix" href="usermanual.html#PREFIX">prefix</a></li> + <li><a name="toc-openread" href="usermanual.html#OPENREAD">openread</a></li> + <li><a name="toc-openwrite" href="usermanual.html#OPENWRITE">openwrite</a></li> + <li><a name="toc-openappend" href="usermanual.html#OPENAPPEND">openappend</a></li> + <li><a name="toc-openupdate" href="usermanual.html#OPENUPDATE">openupdate</a></li> + <li><a name="toc-close" href="usermanual.html#CLOSE">close</a></li> + <li><a name="toc-allopen" href="usermanual.html#ALLOPEN">allopen</a></li> + <li><a name="toc-closeall" href="usermanual.html#CLOSEALL">closeall</a></li> + <li><a name="toc-erasefile" href="usermanual.html#ERASEFILE">erasefile</a></li> + <li><a name="toc-dribble" href="usermanual.html#DRIBBLE">dribble</a></li> + <li><a name="toc-nodribble" href="usermanual.html#NODRIBBLE">nodribble</a></li> + <li><a name="toc-setread" href="usermanual.html#SETREAD">setread</a></li> + <li><a name="toc-setwrite" href="usermanual.html#SETWRITE">setwrite</a></li> + <li><a name="toc-reader" href="usermanual.html#READER">reader</a></li> + <li><a name="toc-writer" href="usermanual.html#WRITER">writer</a></li> + <li><a name="toc-setreadpos" href="usermanual.html#SETREADPOS">setreadpos</a></li> + <li><a name="toc-setwritepos" href="usermanual.html#SETWRITEPOS">setwritepos</a></li> + <li><a name="toc-readpos" href="usermanual.html#READPOS">readpos</a></li> + <li><a name="toc-writepos" href="usermanual.html#WRITEPOS">writepos</a></li> + <li><a name="toc-eofp" href="usermanual.html#EOFP">eofp</a></li> + <li><a name="toc-filep" href="usermanual.html#FILEP">filep</a></li> + </ul></li> + <li><a name="toc-Terminal-Access" href="usermanual.html#TERMINAL-ACCESS">4.4 Terminal Access</a> + <ul class="no-bullet"> + <li><a name="toc-keyp" href="usermanual.html#KEYP">keyp</a></li> + <li><a name="toc-linep" href="usermanual.html#LINEP">linep</a></li> + <li><a name="toc-cleartext" href="usermanual.html#CLEARTEXT">cleartext</a></li> + <li><a name="toc-setcursor" href="usermanual.html#SETCURSOR">setcursor</a></li> + <li><a name="toc-cursor" href="usermanual.html#CURSOR">cursor</a></li> + <li><a name="toc-setmargins" href="usermanual.html#SETMARGINS">setmargins</a></li> + <li><a name="toc-settextcolor" href="usermanual.html#SETTEXTCOLOR">settextcolor</a></li> + <li><a name="toc-increasefont" href="usermanual.html#INCREASEFONT">increasefont</a></li> + <li><a name="toc-settextsize" href="usermanual.html#SETTEXTSIZE">settextsize</a></li> + <li><a name="toc-textsize" href="usermanual.html#TEXTSIZE">textsize</a></li> + <li><a name="toc-setfont" href="usermanual.html#SETFONT">setfont</a></li> + <li><a name="toc-font" href="usermanual.html#FONT">font</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Arithmetic" href="usermanual.html#ARITHMETIC">5 Arithmetic</a> +<ul class="no-bullet"> + <li><a name="toc-Numeric-Operations" href="usermanual.html#NUMERIC-OPERATIONS">5.1 Numeric Operations</a> + <ul class="no-bullet"> + <li><a name="toc-sum" href="usermanual.html#SUM">sum</a></li> + <li><a name="toc-difference" href="usermanual.html#DIFFERENCE">difference</a></li> + <li><a name="toc-minus" href="usermanual.html#MINUS">minus</a></li> + <li><a name="toc-product" href="usermanual.html#PRODUCT">product</a></li> + <li><a name="toc-quotient" href="usermanual.html#QUOTIENT">quotient</a></li> + <li><a name="toc-remainder" href="usermanual.html#REMAINDER">remainder</a></li> + <li><a name="toc-modulo" href="usermanual.html#MODULO">modulo</a></li> + <li><a name="toc-int" href="usermanual.html#INT">int</a></li> + <li><a name="toc-round" href="usermanual.html#ROUND">round</a></li> + <li><a name="toc-sqrt" href="usermanual.html#SQRT">sqrt</a></li> + <li><a name="toc-power" href="usermanual.html#POWER">power</a></li> + <li><a name="toc-exp" href="usermanual.html#EXP">exp</a></li> + <li><a name="toc-log10" href="usermanual.html#LOG10">log10</a></li> + <li><a name="toc-ln" href="usermanual.html#LN">ln</a></li> + <li><a name="toc-sin" href="usermanual.html#SIN">sin</a></li> + <li><a name="toc-radsin" href="usermanual.html#RADSIN">radsin</a></li> + <li><a name="toc-cos" href="usermanual.html#COS">cos</a></li> + <li><a name="toc-radcos" href="usermanual.html#RADCOS">radcos</a></li> + <li><a name="toc-arctan" href="usermanual.html#ARCTAN">arctan</a></li> + <li><a name="toc-radarctan" href="usermanual.html#RADARCTAN">radarctan</a></li> + <li><a name="toc-iseq" href="usermanual.html#ISEQ">iseq</a></li> + <li><a name="toc-rseq" href="usermanual.html#RSEQ">rseq</a></li> + </ul></li> + <li><a name="toc-Numeric-Predicates" href="usermanual.html#NUMERIC-PREDICATES">5.2 Numeric Predicates</a> + <ul class="no-bullet"> + <li><a name="toc-lessp" href="usermanual.html#LESSP">lessp</a></li> + <li><a name="toc-greaterp" href="usermanual.html#GREATERP">greaterp</a></li> + <li><a name="toc-lessequalp" href="usermanual.html#LESSEQUALP">lessequalp</a></li> + <li><a name="toc-greaterequalp" href="usermanual.html#GREATEREQUALP">greaterequalp</a></li> + </ul></li> + <li><a name="toc-Random-Numbers" href="usermanual.html#RANDOM-NUMBERS">5.3 Random Numbers</a> + <ul class="no-bullet"> + <li><a name="toc-random" href="usermanual.html#RANDOM">random</a></li> + <li><a name="toc-rerandom" href="usermanual.html#RERANDOM">rerandom</a></li> + </ul></li> + <li><a name="toc-Print-Formatting" href="usermanual.html#PRINT-FORMATTING">5.4 Print Formatting</a> + <ul class="no-bullet"> + <li><a name="toc-form" href="usermanual.html#FORM">form</a></li> + </ul></li> + <li><a name="toc-Bitwise-Operations" href="usermanual.html#BITWISE-OPERATIONS">5.5 Bitwise Operations</a> + <ul class="no-bullet"> + <li><a name="toc-bitand" href="usermanual.html#BITAND">bitand</a></li> + <li><a name="toc-bitor" href="usermanual.html#BITOR">bitor</a></li> + <li><a name="toc-bitxor" href="usermanual.html#BITXOR">bitxor</a></li> + <li><a name="toc-bitnot" href="usermanual.html#BITNOT">bitnot</a></li> + <li><a name="toc-ashift" href="usermanual.html#ASHIFT">ashift</a></li> + <li><a name="toc-lshift" href="usermanual.html#LSHIFT">lshift</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Logical-Operations" href="usermanual.html#LOGICAL-OPERATIONS">6 Logical Operations</a> +<ul class="no-bullet"> + <li><a name="toc-and" href="usermanual.html#AND">and</a> + <ul class="no-bullet"> + <li><a name="toc-or" href="usermanual.html#OR">or</a></li> + <li><a name="toc-not" href="usermanual.html#NOT">not</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Graphics" href="usermanual.html#GRAPHICS">7 Graphics</a> +<ul class="no-bullet"> + <li><a name="toc-Turtle-Motion" href="usermanual.html#TURTLE-MOTION">7.1 Turtle Motion</a> + <ul class="no-bullet"> + <li><a name="toc-forward" href="usermanual.html#FORWARD">forward</a></li> + <li><a name="toc-back" href="usermanual.html#BACK">back</a></li> + <li><a name="toc-left" href="usermanual.html#LEFT">left</a></li> + <li><a name="toc-right" href="usermanual.html#RIGHT">right</a></li> + <li><a name="toc-setpos" href="usermanual.html#SETPOS">setpos</a></li> + <li><a name="toc-setxy" href="usermanual.html#SETXY">setxy</a></li> + <li><a name="toc-setx" href="usermanual.html#SETX">setx</a></li> + <li><a name="toc-sety" href="usermanual.html#SETY">sety</a></li> + <li><a name="toc-setheading" href="usermanual.html#SETHEADING">setheading</a></li> + <li><a name="toc-home" href="usermanual.html#HOME">home</a></li> + <li><a name="toc-arc" href="usermanual.html#ARC">arc</a></li> + </ul></li> + <li><a name="toc-Turtle-Motion-Queries" href="usermanual.html#TURTLE-MOTION-QUERIES">7.2 Turtle Motion Queries</a> + <ul class="no-bullet"> + <li><a name="toc-pos" href="usermanual.html#POS">pos</a></li> + <li><a name="toc-xcor" href="usermanual.html#XCOR">xcor</a></li> + <li><a name="toc-ycor" href="usermanual.html#YCOR">ycor</a></li> + <li><a name="toc-heading" href="usermanual.html#HEADING">heading</a></li> + <li><a name="toc-towards" href="usermanual.html#TOWARDS">towards</a></li> + <li><a name="toc-scrunch" href="usermanual.html#SCRUNCH">scrunch</a></li> + </ul></li> + <li><a name="toc-Turtle-and-Window-Control" href="usermanual.html#TURTLE-AND-WINDOW-CONTROL">7.3 Turtle and Window Control</a> + <ul class="no-bullet"> + <li><a name="toc-showturtle" href="usermanual.html#SHOWTURTLE">showturtle</a></li> + <li><a name="toc-hideturtle" href="usermanual.html#HIDETURTLE">hideturtle</a></li> + <li><a name="toc-clean" href="usermanual.html#CLEAN">clean</a></li> + <li><a name="toc-clearscreen" href="usermanual.html#CLEARSCREEN">clearscreen</a></li> + <li><a name="toc-wrap" href="usermanual.html#WRAP">wrap</a></li> + <li><a name="toc-window" href="usermanual.html#WINDOW">window</a></li> + <li><a name="toc-fence" href="usermanual.html#FENCE">fence</a></li> + <li><a name="toc-fill" href="usermanual.html#FILL">fill</a></li> + <li><a name="toc-filled" href="usermanual.html#FILLED">filled</a></li> + <li><a name="toc-label" href="usermanual.html#LABEL">label</a></li> + <li><a name="toc-setlabelheight" href="usermanual.html#SETLABELHEIGHT">setlabelheight</a></li> + <li><a name="toc-textscreen" href="usermanual.html#TEXTSCREEN">textscreen</a></li> + <li><a name="toc-fullscreen" href="usermanual.html#FULLSCREEN">fullscreen</a></li> + <li><a name="toc-splitscreen" href="usermanual.html#SPLITSCREEN">splitscreen</a></li> + <li><a name="toc-setscrunch" href="usermanual.html#SETSCRUNCH">setscrunch</a></li> + <li><a name="toc-refresh" href="usermanual.html#REFRESH">refresh</a></li> + <li><a name="toc-norefresh" href="usermanual.html#NOREFRESH">norefresh</a></li> + </ul></li> + <li><a name="toc-Turtle-and-Window-Queries" href="usermanual.html#TURTLE-AND-WINDOW-QUERIES">7.4 Turtle and Window Queries</a> + <ul class="no-bullet"> + <li><a name="toc-shownp" href="usermanual.html#SHOWNP">shownp</a></li> + <li><a name="toc-screenmode" href="usermanual.html#SCREENMODE">screenmode</a></li> + <li><a name="toc-turtlemode" href="usermanual.html#TURTLEMODE">turtlemode</a></li> + <li><a name="toc-labelsize" href="usermanual.html#LABELSIZE">labelsize</a></li> + </ul></li> + <li><a name="toc-Pen-and-Background-Control" href="usermanual.html#PEN-AND-BACKGROUND-CONTROL">7.5 Pen and Background Control</a> + <ul class="no-bullet"> + <li><a name="toc-pendown" href="usermanual.html#PENDOWN">pendown</a></li> + <li><a name="toc-penup" href="usermanual.html#PENUP">penup</a></li> + <li><a name="toc-penpaint" href="usermanual.html#PENPAINT">penpaint</a></li> + <li><a name="toc-penerase" href="usermanual.html#PENERASE">penerase</a></li> + <li><a name="toc-penreverse" href="usermanual.html#PENREVERSE">penreverse</a></li> + <li><a name="toc-setpencolor" href="usermanual.html#SETPENCOLOR">setpencolor</a></li> + <li><a name="toc-setpalette" href="usermanual.html#SETPALETTE">setpalette</a></li> + <li><a name="toc-setpensize" href="usermanual.html#SETPENSIZE">setpensize</a></li> + <li><a name="toc-setpenpattern" href="usermanual.html#SETPENPATTERN">setpenpattern</a></li> + <li><a name="toc-setpen" href="usermanual.html#SETPEN">setpen</a></li> + <li><a name="toc-setbackground" href="usermanual.html#SETBACKGROUND">setbackground</a></li> + </ul></li> + <li><a name="toc-Pen-Queries" href="usermanual.html#PEN-QUERIES">7.6 Pen Queries</a> + <ul class="no-bullet"> + <li><a name="toc-pendownp" href="usermanual.html#PENDOWNP">pendownp</a></li> + <li><a name="toc-penmode" href="usermanual.html#PENMODE">penmode</a></li> + <li><a name="toc-pencolor" href="usermanual.html#PENCOLOR">pencolor</a></li> + <li><a name="toc-palette" href="usermanual.html#PALETTE">palette</a></li> + <li><a name="toc-pensize" href="usermanual.html#PENSIZE">pensize</a></li> + <li><a name="toc-pen" href="usermanual.html#PEN">pen</a></li> + <li><a name="toc-background" href="usermanual.html#BACKGROUND">background</a></li> + </ul></li> + <li><a name="toc-Saving-and-Loading-Pictures" href="usermanual.html#SAVING-AND-LOADING-PICTURES">7.7 Saving and Loading Pictures</a> + <ul class="no-bullet"> + <li><a name="toc-savepict" href="usermanual.html#SAVEPICT">savepict</a></li> + <li><a name="toc-loadpict" href="usermanual.html#LOADPICT">loadpict</a></li> + <li><a name="toc-epspict" href="usermanual.html#EPSPICT">epspict</a></li> + </ul></li> + <li><a name="toc-Mouse-Queries" href="usermanual.html#MOUSE-QUERIES">7.8 Mouse Queries</a> + <ul class="no-bullet"> + <li><a name="toc-mousepos" href="usermanual.html#MOUSEPOS">mousepos</a></li> + <li><a name="toc-clickpos" href="usermanual.html#CLICKPOS">clickpos</a></li> + <li><a name="toc-buttonp" href="usermanual.html#BUTTONP">buttonp</a></li> + <li><a name="toc-button" href="usermanual.html#BUTTON">button</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Workspace-Management" href="usermanual.html#WORKSPACE-MANAGEMENT">8 Workspace Management</a> +<ul class="no-bullet"> + <li><a name="toc-Procedure-Definition" href="usermanual.html#PROCEDURE-DEFINITION">8.1 Procedure Definition</a> + <ul class="no-bullet"> + <li><a name="toc-to" href="usermanual.html#TO">to</a></li> + <li><a name="toc-define" href="usermanual.html#DEFINE">define</a></li> + <li><a name="toc-text" href="usermanual.html#TEXT">text</a></li> + <li><a name="toc-fulltext" href="usermanual.html#FULLTEXT">fulltext</a></li> + <li><a name="toc-copydef" href="usermanual.html#COPYDEF">copydef</a></li> + </ul></li> + <li><a name="toc-Variable-Definition" href="usermanual.html#VARIABLE-DEFINITION">8.2 Variable Definition</a> + <ul class="no-bullet"> + <li><a name="toc-make" href="usermanual.html#MAKE">make</a></li> + <li><a name="toc-name" href="usermanual.html#NAME">name</a></li> + <li><a name="toc-local" href="usermanual.html#LOCAL">local</a></li> + <li><a name="toc-localmake" href="usermanual.html#LOCALMAKE">localmake</a></li> + <li><a name="toc-thing" href="usermanual.html#THING">thing</a></li> + <li><a name="toc-global" href="usermanual.html#GLOBAL">global</a></li> + </ul></li> + <li><a name="toc-Property-Lists" href="usermanual.html#PROPERTY-LISTS">8.3 Property Lists</a> + <ul class="no-bullet"> + <li><a name="toc-pprop" href="usermanual.html#PPROP">pprop</a></li> + <li><a name="toc-gprop" href="usermanual.html#GPROP">gprop</a></li> + <li><a name="toc-remprop" href="usermanual.html#REMPROP">remprop</a></li> + <li><a name="toc-plist" href="usermanual.html#PLIST">plist</a></li> + </ul></li> + <li><a name="toc-Workspace-Predicates" href="usermanual.html#WORKSPACE-PREDICATES">8.4 Workspace Predicates</a> + <ul class="no-bullet"> + <li><a name="toc-procedurep" href="usermanual.html#PROCEDUREP">procedurep</a></li> + <li><a name="toc-primitivep" href="usermanual.html#PRIMITIVEP">primitivep</a></li> + <li><a name="toc-definedp" href="usermanual.html#DEFINEDP">definedp</a></li> + <li><a name="toc-namep" href="usermanual.html#NAMEP">namep</a></li> + <li><a name="toc-plistp" href="usermanual.html#PLISTP">plistp</a></li> + </ul></li> + <li><a name="toc-Workspace-Queries" href="usermanual.html#WORKSPACE-QUERIES">8.5 Workspace Queries</a> + <ul class="no-bullet"> + <li><a name="toc-contents" href="usermanual.html#CONTENTS">contents</a></li> + <li><a name="toc-buried" href="usermanual.html#BURIED">buried</a></li> + <li><a name="toc-traced" href="usermanual.html#TRACED">traced</a></li> + <li><a name="toc-stepped" href="usermanual.html#STEPPED">stepped</a></li> + <li><a name="toc-procedures" href="usermanual.html#PROCEDURES">procedures</a></li> + <li><a name="toc-primitives" href="usermanual.html#PRIMITIVES">primitives</a></li> + <li><a name="toc-names" href="usermanual.html#NAMES">names</a></li> + <li><a name="toc-plists" href="usermanual.html#PLISTS">plists</a></li> + <li><a name="toc-namelist" href="usermanual.html#NAMELIST">namelist</a></li> + <li><a name="toc-pllist" href="usermanual.html#PLLIST">pllist</a></li> + <li><a name="toc-arity" href="usermanual.html#ARITY">arity</a></li> + <li><a name="toc-nodes" href="usermanual.html#NODES">nodes</a></li> + </ul></li> + <li><a name="toc-Workspace-Inspection" href="usermanual.html#WORKSPACE-INSPECTION">8.6 Workspace Inspection</a> + <ul class="no-bullet"> + <li><a name="toc-po" href="usermanual.html#PO">po</a></li> + <li><a name="toc-poall" href="usermanual.html#POALL">poall</a></li> + <li><a name="toc-pops" href="usermanual.html#POPS">pops</a></li> + <li><a name="toc-pons" href="usermanual.html#PONS">pons</a></li> + <li><a name="toc-popls" href="usermanual.html#POPLS">popls</a></li> + <li><a name="toc-pon" href="usermanual.html#PON">pon</a></li> + <li><a name="toc-popl" href="usermanual.html#POPL">popl</a></li> + <li><a name="toc-pot" href="usermanual.html#POT">pot</a></li> + <li><a name="toc-pots" href="usermanual.html#POTS">pots</a></li> + </ul></li> + <li><a name="toc-Workspace-Control" href="usermanual.html#WORKSPACE-CONTROL">8.7 Workspace Control</a> + <ul class="no-bullet"> + <li><a name="toc-erase" href="usermanual.html#ERASE">erase</a></li> + <li><a name="toc-erall" href="usermanual.html#ERALL">erall</a></li> + <li><a name="toc-erps" href="usermanual.html#ERPS">erps</a></li> + <li><a name="toc-erns" href="usermanual.html#ERNS">erns</a></li> + <li><a name="toc-erpls" href="usermanual.html#ERPLS">erpls</a></li> + <li><a name="toc-ern" href="usermanual.html#ERN">ern</a></li> + <li><a name="toc-erpl" href="usermanual.html#ERPL">erpl</a></li> + <li><a name="toc-bury" href="usermanual.html#BURY">bury</a></li> + <li><a name="toc-buryall" href="usermanual.html#BURYALL">buryall</a></li> + <li><a name="toc-buryname" href="usermanual.html#BURYNAME">buryname</a></li> + <li><a name="toc-unbury" href="usermanual.html#UNBURY">unbury</a></li> + <li><a name="toc-unburyall" href="usermanual.html#UNBURYALL">unburyall</a></li> + <li><a name="toc-unburyname" href="usermanual.html#UNBURYNAME">unburyname</a></li> + <li><a name="toc-buriedp" href="usermanual.html#BURIEDP">buriedp</a></li> + <li><a name="toc-trace" href="usermanual.html#TRACE">trace</a></li> + <li><a name="toc-untrace" href="usermanual.html#UNTRACE">untrace</a></li> + <li><a name="toc-tracedp" href="usermanual.html#TRACEDP">tracedp</a></li> + <li><a name="toc-step" href="usermanual.html#STEP">step</a></li> + <li><a name="toc-unstep" href="usermanual.html#UNSTEP">unstep</a></li> + <li><a name="toc-steppedp" href="usermanual.html#STEPPEDP">steppedp</a></li> + <li><a name="toc-edit" href="usermanual.html#EDIT">edit</a></li> + <li><a name="toc-editfile" href="usermanual.html#EDITFILE">editfile</a></li> + <li><a name="toc-edall" href="usermanual.html#EDALL">edall</a></li> + <li><a name="toc-edps" href="usermanual.html#EDPS">edps</a></li> + <li><a name="toc-edns" href="usermanual.html#EDNS">edns</a></li> + <li><a name="toc-edpls" href="usermanual.html#EDPLS">edpls</a></li> + <li><a name="toc-edn" href="usermanual.html#EDN">edn</a></li> + <li><a name="toc-edpl" href="usermanual.html#EDPL">edpl</a></li> + <li><a name="toc-save" href="usermanual.html#SAVE">save</a></li> + <li><a name="toc-savel" href="usermanual.html#SAVEL">savel</a></li> + <li><a name="toc-load" href="usermanual.html#LOAD">load</a></li> + <li><a name="toc-cslsload" href="usermanual.html#CSLSLOAD">cslsload</a></li> + <li><a name="toc-help" href="usermanual.html#HELP">help</a></li> + <li><a name="toc-seteditor" href="usermanual.html#SETEDITOR">seteditor</a></li> + <li><a name="toc-setlibloc" href="usermanual.html#SETLIBLOC">setlibloc</a></li> + <li><a name="toc-setcslsloc" href="usermanual.html#SETCSLSLOC">setcslsloc</a></li> + <li><a name="toc-sethelploc" href="usermanual.html#SETHELPLOC">sethelploc</a></li> + <li><a name="toc-settemploc" href="usermanual.html#SETTEMPLOC">settemploc</a></li> + <li><a name="toc-gc" href="usermanual.html#GC">gc</a></li> + <li><a name="toc-_002esetsegmentsize" href="usermanual.html#g_t_002eSETSEGMENTSIZE">.setsegmentsize</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Control-Structures" href="usermanual.html#CONTROL-STRUCTURES">9 Control Structures</a> +<ul class="no-bullet"> + <li><a name="toc-Control" href="usermanual.html#CONTROL">9.1 Control</a> + <ul class="no-bullet"> + <li><a name="toc-run" href="usermanual.html#RUN">run</a></li> + <li><a name="toc-runresult" href="usermanual.html#RUNRESULT">runresult</a></li> + <li><a name="toc-repeat" href="usermanual.html#REPEAT">repeat</a></li> + <li><a name="toc-forever" href="usermanual.html#FOREVER">forever</a></li> + <li><a name="toc-repcount" href="usermanual.html#REPCOUNT">repcount</a></li> + <li><a name="toc-if" href="usermanual.html#IF">if</a></li> + <li><a name="toc-ifelse" href="usermanual.html#IFELSE">ifelse</a></li> + <li><a name="toc-test" href="usermanual.html#TEST">test</a></li> + <li><a name="toc-iftrue" href="usermanual.html#IFTRUE">iftrue</a></li> + <li><a name="toc-iffalse" href="usermanual.html#IFFALSE">iffalse</a></li> + <li><a name="toc-stop" href="usermanual.html#STOP">stop</a></li> + <li><a name="toc-output" href="usermanual.html#OUTPUT">output</a></li> + <li><a name="toc-catch" href="usermanual.html#CATCH">catch</a></li> + <li><a name="toc-throw" href="usermanual.html#THROW">throw</a></li> + <li><a name="toc-error" href="usermanual.html#ERROR">error</a></li> + <li><a name="toc-pause" href="usermanual.html#PAUSE">pause</a></li> + <li><a name="toc-continue" href="usermanual.html#CONTINUE">continue</a></li> + <li><a name="toc-wait" href="usermanual.html#WAIT">wait</a></li> + <li><a name="toc-bye" href="usermanual.html#BYE">bye</a></li> + <li><a name="toc-_002emaybeoutput" href="usermanual.html#dMAYBEOUTPUT">.maybeoutput</a></li> + <li><a name="toc-goto" href="usermanual.html#GOTO">goto</a></li> + <li><a name="toc-tag" href="usermanual.html#TAG">tag</a></li> + <li><a name="toc-ignore" href="usermanual.html#IGNORE">ignore</a></li> + <li><a name="toc-_0060" href="usermanual.html#back_002dquote">‘</a></li> + <li><a name="toc-for" href="usermanual.html#FOR">for</a></li> + <li><a name="toc-do_002ewhile" href="usermanual.html#DOdWHILE">do.while</a></li> + <li><a name="toc-while" href="usermanual.html#WHILE">while</a></li> + <li><a name="toc-do_002euntil" href="usermanual.html#DOdUNTIL">do.until</a></li> + <li><a name="toc-until" href="usermanual.html#UNTIL">until</a></li> + <li><a name="toc-case" href="usermanual.html#CASE">case</a></li> + <li><a name="toc-cond" href="usermanual.html#COND">cond</a></li> + </ul></li> + <li><a name="toc-Template_002dbased-Iteration" href="usermanual.html#TEMPLATE_002dBASED-ITERATION">9.2 Template-based Iteration</a> + <ul class="no-bullet"> + <li><a name="toc-apply" href="usermanual.html#APPLY">apply</a></li> + <li><a name="toc-invoke" href="usermanual.html#INVOKE">invoke</a></li> + <li><a name="toc-foreach" href="usermanual.html#FOREACH">foreach</a></li> + <li><a name="toc-map" href="usermanual.html#MAP">map</a></li> + <li><a name="toc-map_002ese" href="usermanual.html#MAPdSE">map.se</a></li> + <li><a name="toc-filter" href="usermanual.html#FILTER">filter</a></li> + <li><a name="toc-find" href="usermanual.html#FIND">find</a></li> + <li><a name="toc-reduce" href="usermanual.html#REDUCE">reduce</a></li> + <li><a name="toc-crossmap" href="usermanual.html#CROSSMAP">crossmap</a></li> + <li><a name="toc-cascade" href="usermanual.html#CASCADE">cascade</a></li> + <li><a name="toc-cascade_002e2" href="usermanual.html#CASCADEd2">cascade.2</a></li> + <li><a name="toc-transfer" href="usermanual.html#TRANSFER">transfer</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Macros" href="usermanual.html#MACROS">10 Macros</a> +<ul class="no-bullet"> + <li><a name="toc-_002emacro" href="usermanual.html#dMACRO">.macro</a> + <ul class="no-bullet"> + <li><a name="toc-_002edefmacro" href="usermanual.html#dDEFMACRO">.defmacro</a></li> + <li><a name="toc-macrop" href="usermanual.html#MACROP">macrop</a></li> + <li><a name="toc-macroexpand" href="usermanual.html#MACROEXPAND">macroexpand</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Error-Processing" href="usermanual.html#ERROR-PROCESSING">11 Error Processing</a> +<ul class="no-bullet"> + <li><a name="toc-Error-Codes" href="usermanual.html#ERROR-CODES">11.1 Error Codes</a></li> +</ul></li> +<li><a name="toc-Special-Variables" href="usermanual.html#SPECIAL-VARIABLES">12 Special Variables</a> +<ul class="no-bullet"> + <li><a name="toc-allowgetset" href="usermanual.html#ALLOWGETSET">allowgetset</a> + <ul class="no-bullet"> + <li><a name="toc-buttonact" href="usermanual.html#BUTTONACT">buttonact</a></li> + <li><a name="toc-caseignoredp" href="usermanual.html#CASEIGNOREDP">caseignoredp</a></li> + <li><a name="toc-commandline" href="usermanual.html#COMMANDLINE">commandline</a></li> + <li><a name="toc-erract" href="usermanual.html#ERRACT">erract</a></li> + <li><a name="toc-fullprintp" href="usermanual.html#FULLPRINTP">fullprintp</a></li> + <li><a name="toc-keyact" href="usermanual.html#KEYACT">keyact</a></li> + <li><a name="toc-loadnoisily" href="usermanual.html#LOADNOISILY">loadnoisily</a></li> + <li><a name="toc-printdepthlimit" href="usermanual.html#PRINTDEPTHLIMIT">printdepthlimit</a></li> + <li><a name="toc-printwidthlimit" href="usermanual.html#PRINTWIDTHLIMIT">printwidthlimit</a></li> + <li><a name="toc-redefp" href="usermanual.html#REDEFP">redefp</a></li> + <li><a name="toc-startup" href="usermanual.html#STARTUP">startup</a></li> + <li><a name="toc-unburyonedit" href="usermanual.html#UNBURYONEDIT">unburyonedit</a></li> + <li><a name="toc-usealternatenames" href="usermanual.html#USEALTERNATENAMES">usealternatenames</a></li> + <li><a name="toc-logoversion" href="usermanual.html#LOGOVERSION">logoversion</a></li> + <li><a name="toc-logoplatform" href="usermanual.html#LOGOPLATFORM">logoplatform</a></li> + </ul></li> +</ul></li> +<li><a name="toc-Internationalization" href="usermanual.html#INTERNATIONALIZATION">13 Internationalization</a></li> +<li><a name="toc-INDEX-1" href="usermanual.html#INDEX">INDEX</a></li> + +</ul> +</div> + + + +<a name="Top"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#INTRODUCTION" accesskey="n" rel="next">INTRODUCTION</a>, Previous: <a href="https://people.eecs.berkeley.edu/~bh/docs/html/dir.html#Top" accesskey="p" rel="prev">(dir)</a>, Up: <a href="https://people.eecs.berkeley.edu/~bh/docs/html/dir.html#Top" accesskey="u" rel="up">(dir)</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<h1 class="node-heading">Top</h1> + + + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#INTRODUCTION" accesskey="1">INTRODUCTION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="2">DATA STRUCTURE PRIMITIVES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OBJECTS" accesskey="3">OBJECTS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#COMMUNICATION" accesskey="4">COMMUNICATION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ARITHMETIC" accesskey="5">ARITHMETIC</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="6">LOGICAL OPERATIONS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GRAPHICS" accesskey="7">GRAPHICS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="8">WORKSPACE MANAGEMENT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="9">CONTROL STRUCTURES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MACROS">MACROS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERROR-PROCESSING">ERROR PROCESSING</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SPECIAL-VARIABLES">SPECIAL VARIABLES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#INTERNATIONALIZATION">INTERNATIONALIZATION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#INDEX">INDEX</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="INTRODUCTION"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="n" rel="next">DATA STRUCTURE PRIMITIVES</a>, Previous: <a href="usermanual.html#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Introduction"></a> +<h2 class="chapter">1 Introduction</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#OVERVIEW" accesskey="1">OVERVIEW</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX" accesskey="2">GETTER/SETTER VARIBLE SYNTAX</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ENTERING-AND-LEAVING-LOGO" accesskey="3">ENTERING AND LEAVING LOGO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TOKENIZATION" accesskey="4">TOKENIZATION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="OVERVIEW"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX" accesskey="n" rel="next">GETTER/SETTER VARIBLE SYNTAX</a>, Previous: <a href="usermanual.html#INTRODUCTION" accesskey="p" rel="prev">INTRODUCTION</a>, Up: <a href="usermanual.html#INTRODUCTION" accesskey="u" rel="up">INTRODUCTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Overview"></a> +<h3 class="section">1.1 Overview</h3> + +<a name="index-Copyright"></a> +<a name="index-Computer_005fScience_005fLogo_005fStyle"></a> + +<p>Copyright © 1993 by the Regents of the University of California +</p> +<p>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 3 of the License, or +(at your option) any later version. +</p> +<p>This program is distributed in the hope that it will be useful, +but <var>WITHOUT ANY WARRANTY</var>; without even the implied warranty of +<var>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE</var>. See the +GNU General Public License for more details. +</p> +<p>You should have received a copy of the GNU General Public License +along with this program. If not, see <https://www.gnu.org/licenses/>. +</p> +<p>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. +</p> +<p>Read <cite>Computer Science Logo Style, Volume 1: + Symbolic Computing</cite> by Brian Harvey (MIT Press, 1997) for a tutorial +on Logo programming with emphasis on symbolic computation. +</p> +<p>Here are the special features of this dialect of Logo: +</p> +<div class="display"> +<pre class="display"> + +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 LCSI-style syntax (no special forms except TO). The best of +both worlds. + +First-class instruction and expression templates (see APPLY). + +Macros. +</pre></div> + +<p>Features <strong>not</strong> found in Berkeley Logo include robotics, music, +animation, parallelism, and multimedia. For those, buy a commercial version. +</p> + +<hr> +<a name="GETTER_002fSETTER-VARIBLE-SYNTAX"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ENTERING-AND-LEAVING-LOGO" accesskey="n" rel="next">ENTERING AND LEAVING LOGO</a>, Previous: <a href="usermanual.html#OVERVIEW" accesskey="p" rel="prev">OVERVIEW</a>, Up: <a href="usermanual.html#INTRODUCTION" accesskey="u" rel="up">INTRODUCTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Getter_002fSetter-Variable-Syntax"></a> +<h3 class="section">1.2 Getter/Setter Variable Syntax</h3> +<a name="index-getter"></a> +<a name="index-setter"></a> + +<p>Logo distinguishes <var>procedures</var> from <var>variables</var>. 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. +</p> +<p>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 +</p><div class="example"> +<pre class="example"> PRINT FIRST "WORD +</pre></div> +<p>the procedures named <code>FIRST</code> and <code>PRINT</code> are invoked, but the +procedure named <var>WORD</var> is not invoked; the word <var>W-O-R-D</var> is the +input to FIRST. +</p> +<p>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 <code>MAKE</code>, 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: +</p><div class="example"> +<pre class="example"> MAKE "MY.VAR FIRST "WORD +</pre></div> +<p>gives the variable named <code>MY.VAR</code> the value <code>W</code> (the first letter of +<code>WORD</code>). +</p> +<p>To find the value of a variable, Logo provides the primitive procedure +<code>THING</code>, which takes a variable name as its input, and outputs the value +of the accessible variable with that name. Thus +</p><div class="example"> +<pre class="example"> PRINT THING "MY.VAR +</pre></div> +<p>will print <code>W</code> (supposing the <code>MAKE</code> above has been done). Since +finding the value of a specific, known variable name is such a common +operation, Logo also provides an abbreviated notation that combines +<code>THING</code> with quote: +</p><div class="example"> +<pre class="example"> PRINT :MY.VAR +</pre></div> +<p>The colon (which Logo old-timers pronounce "dots") replaces <code>THING</code> +and <code>"</code> in the earlier version of the instruction. +</p> +<p>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 <code>THING</code> wonder why an instruction such as +</p><div class="example"> +<pre class="example"> MAKE "NEW.VAR :OLD.VAR +</pre></div> +<p>uses two different punctuation marks to identify the two variables. +(Having read the paragraphs above, you will understand that actually +both variable names are quoted, but the procedure <code>THING</code> is +invoked to find the value of <code>OLD.VAR</code>, since it’s that value, not +<code>OLD.VAR</code>’s name, that <code>MAKE</code> needs to know. It wouldn’t make +sense to ask for <code>THING</code> of <code>NEW.VAR</code>, since we haven’t given +<code>NEW.VAR</code> a value yet.) +</p> +<p>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 +</p><div class="example"> +<pre class="example"> PRINT MY.VAR +</pre></div> +<p>and Logo would realize that <code>MY.VAR</code> is the name of a variable, not +of a procedure. The traditional reason not to use this convention +is that Logo 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: +</p><div class="example"> +<pre class="example"> TO PLURAL :WORD + OUTPUT WORD :WORD "S + END +</pre></div> +<p>Here the name <code>WORD</code> is a natural choice for the input to <code>PLURAL</code>, since +it describes the kind of input that <code>PLURAL</code> expects. Within the procedure, +we use <code>WORD</code> to represent Logo’s primitive procedure that combines two +input words to form a new, longer word; we use <code>:WORD</code> to represent the +variable containing the input, whatever actual word is given when +<code>PLURAL</code> is invoked. +</p><div class="example"> +<pre class="example"> ? PRINT PLURAL "COMPUTER + COMPUTERS +</pre></div> + +<p>However, if a Logo instruction includes an unquoted word that is <strong>not</strong> +the name of a procedure, Logo could look for a variable of that name instead. +This would allow a "punctuationless" Logo, <strong>provided that users who +want to work without colons for variables choose variable names that are not +also procedure names.</strong> +</p> +<p>What about assigning a value to a variable? Could we do without the +quotation mark on <code>MAKE</code>’s first input? Alas, no. Although the +first input to <code>MAKE</code> is <strong>usually</strong> a constant, known +variable name, sometimes it isn’t, as in this example: +</p><div class="example"> +<pre class="example"> TO INCREMENT :VAR + MAKE :VAR (THING :VAR)+1 ; Note: it's not "VAR here! + END + + ? MAKE "X 5 + ? INCREMENT "X + ? PRINT :X + 6 +</pre></div> +<p>The procedure <code>INCREMENT</code> 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 <code>VAR</code>, and whose value is the +word <code>X</code>; and the variable whose name is <code>X</code> and whose value changes +from 5 to 6. Suppose we changed the behavior of <code>MAKE</code> so that it +took the word after <code>MAKE</code> as the name of the variable to change; +we would be unable to write <code>INCREMENT</code>: +</p><div class="example"> +<pre class="example"> TO INCREMENT :VAR ; nonworking! + MAKE VAR (THING VAR)+1 + END +</pre></div> +<p>This would assign a new value to <code>VAR</code>, not to <code>X</code>. +</p> +<p>What we can do is to allow an <strong>alternative</strong> to <code>MAKE</code>, a +"setter" procedure for a particular variable. The notation will be +</p><div class="example"> +<pre class="example"> ? SETFOO 7 + ? PRINT FOO + 7 +</pre></div> +<p><code>SETFOO</code> is a "setter procedure" that takes one input (in this case +the input 7) and assigns its value to the variable named <code>FOO</code>. +</p> +<p>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 <code>FOO</code> is +set with <code>SETFOO</code> and examined with <code>FOO</code>, but the same name +can’t be used for procedure and variable. +</p> +<p>Here is how this choice is allowed: Berkeley Logo uses traditional +notation, with procedures distinct from variables. However, if there is +a variable named <code>AllowGetSet</code> whose value is TRUE (which +there is, by default, when Logo starts up), then if a Logo instruction +refers to a <strong>nonexistent</strong> procedure (so that the error message +"I don’t know how to ..." would result), Logo tries the following two +steps: +<a name="index-AllowGetSet"></a> +</p> +<div class="display"> +<pre class="display"> 1. If the name is at least four characters long, and the first three + characters are the letters <code>SET</code> (upper or lower case), and if the name + is followed in the instruction by another value, and if the name + without the <code>SET</code> is the name of a variable that already exists, then + Logo will invoke <code>MAKE</code> with its first input being the name without the + <code>SET</code>, 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 + <code>THING</code> with that name as input, to find the variable’s value. +</pre></div> + +<p>Step 1 requires that the variable already exist so that misspellings of names +of <code>SETxxx</code> primitives (e.g., <code>SETHEADING</code>) will still be caught, instead of +silently creating a new variable. The command <code>GLOBAL</code> can be used to create +a variable without giving it a value. +</p> +<p>One final point: The <code>TO</code> command in Logo has always been a special +case; the rest of the line starting with <code>TO</code> 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 <code>THING</code> to be +invoked. They are merely mnemonic aids, reminding the Logo user +that these words are names of variables. (Arguably, this nonstantard +behavior of <code>TO</code> adds to Logo beginners’ confusion about colons.) +To a programmer using colonless variable references, the colons in +the <code>TO</code> line are unnecessary and meaningless. Berkeley Logo therefore +makes the colons optional: +</p><div class="example"> +<pre class="example"> TO FOO :IN1 :IN2 +</pre></div> +<p>and +</p><div class="example"> +<pre class="example"> TO FOO IN1 IN2 +</pre></div> +<p>are both allowed. +</p> + +<hr> +<a name="ENTERING-AND-LEAVING-LOGO"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TOKENIZATION" accesskey="n" rel="next">TOKENIZATION</a>, Previous: <a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX" accesskey="p" rel="prev">GETTER/SETTER VARIBLE SYNTAX</a>, Up: <a href="usermanual.html#INTRODUCTION" accesskey="u" rel="up">INTRODUCTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Entering-and-Leaving-Logo"></a> +<h3 class="section">1.3 Entering and Leaving Logo</h3> + +<a name="index-starting-ucblogo"></a> +<a name="index-leaving-ucblogo"></a> + +<p>The process to start Logo depends on your operating system: +</p> +<dl compact="compact"> +<dt>Unix:</dt> +<dd><p>Type the word <tt>logo</tt> to the shell. (The directory in which you’ve +installed Logo must be in your path.) +</p> +</dd> +<dt>DOS:</dt> +<dd><p>Change directories to the one containing Logo (probably +<code>C:\UCBLOGO</code>). Then type <tt>UCBLOGO</tt> for the large memory +version, or <tt>BL</tt> for the 640K version. +</p> +</dd> +<dt>Mac:</dt> +<dd><p>Double-click on the <code>LOGO</code> icon within the "UCB Logo" folder. +</p> +</dd> +<dt>Windows:</dt> +<dd><p>Double-click on the <code>UCBWLOGO</code> icon in the <code>UCBLOGO</code> folder. +</p></dd> +</dl> + +<p>To leave Logo, enter the command <code>bye</code>. +</p> +<p>On startup, Logo looks for a file named <samp>startup.lg</samp> in the system Logo +library and, if found, loads it. Then it looks for <samp>startup.lg</samp> 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. +</p> +<p>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 <code>bye</code> 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. +</p> +<p>If a command line argument is just a hyphen, then 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 <code>COMMAND.LINE</code> 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 +<tt>#!/usr/local/bin/logo <span class="nolinebreak">-</span></tt><!-- /@w --> (note the hyphen) then the script can be given +command line arguments and they all end up in <code>:COMMAND.LINE</code> along with +the script’s path. Experiment. +</p> +<p>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 <tt>THROW "TOPLEVEL</tt><!-- /@w -->. If +you type your quit character Logo will pause as if you did <code>PAUSE</code>. +</p> +<div class="example"> +<pre class="example"> wxWidgets Unix DOS/Windows Mac Classic + +toplevel alt-S usually ctrl-C ctrl-Q command-. (period) + +pause alt-P usually ctrl-\ ctrl-W command-, (comma) +</pre></div> + +<p>If you have an environment variable called <code>LOGOLIB</code> whose value is the +name of a directory, then Logo will use that directory instead of the default +library. If you invoke a procedure that has not been defined, Logo first +looks for a file in the current directory named <samp><var>proc</var>.lg</samp> where +<var>proc</var> 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 <samp><var>proc</var></samp> (no <samp>.lg</samp>) and, if it exists, loads it. If +neither file contains a definition 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. +</p> + +<hr> +<a name="TOKENIZATION"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#ENTERING-AND-LEAVING-LOGO" accesskey="p" rel="prev">ENTERING AND LEAVING LOGO</a>, Up: <a href="usermanual.html#INTRODUCTION" accesskey="u" rel="up">INTRODUCTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Tokenization"></a> +<h3 class="section">1.4 Tokenization</h3> + +<p>Names of procedures, variables, and property lists are case-insensitive. So +are the special words <code>END</code>, <code>TRUE</code>, and <code>FALSE</code>. Case of +letters is preserved in everything you type, however. +</p> +<a name="index-case_002dinsensitive"></a> +<a name="index-delimiters"></a> +<a name="index-runparsing"></a> +<a name="index-line_002dcontinuation"></a> +<a name="index-comments"></a> + +<p>Within square brackets, words are delimited only by spaces and square +brackets. <code>[2+3]</code> is a list containing one word. Note, however, that +the Logo primitives that interpret such a list as a Logo instruction or +expression (<code>RUN</code>, <code>IF</code>, etc.) reparse the list as if it had not +been typed inside brackets. +</p> +<p>After a quotation mark outside square brackets, a word is delimited by +a space, a square bracket, or a parenthesis. +</p> +<p>A word not after a quotation mark or inside square brackets is delimited by a +space, a bracket, a parenthesis, or an infix operator <code>+-*/=<></code>. 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 <code><=</code>, <code>>=</code>, and <code><></code> (the +latter meaning not-equal) with no intervening space are recognized as a single +word. +</p> +<p>A word consisting of a question mark followed by a number (e.g., <code>?37</code>), +when runparsed (i.e., where a procedure name is expected), is treated +as if it were the sequence +</p> +<div class="example"> +<pre class="example">( ? 37 ) +</pre></div> + +<p>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. +</p> +<p>A line (an instruction line or one read by <code>READLIST</code> or <code>READWORD</code>) +can be continued onto the following line if its last character is a tilde (<code>~</code>). +<code>READWORD</code> preserves the tilde and the newline; <code>READLIST</code> does not. +</p> +<p>Lines read with <code>READRAWLINE</code> are never continued. +</p> +<p>An instruction line or a line read by <code>READLIST</code> (but not by <code>READWORD</code>) +is automatically continued 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 <code>END</code>; this is to prevent runaway procedure definitions. +Lines explicitly continued with a tilde avoid this restriction. +</p> +<p>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. +</p> +<p>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 +</p> +<div class="example"> +<pre class="example">print "abc;comment ~ +def +</pre></div> + +<p>will print the word <code>abcdef</code>. Semicolon has no special meaning in data +lines read by <code>READWORD</code> or <code>READLIST</code>, but such a line can later be reparsed +using <code>RUNPARSE</code> and then comments will be recognized. +</p> +<p>The two-character sequence <code>#!</code> at the beginning of a line also starts a +comment. Unix users can therefore write a file containing Logo commands, +starting with the line +</p><div class="example"> +<pre class="example">#! /usr/local/bin/logo +</pre></div> +<p>(or wherever your Logo executable lives) and the file will be executable +directly from the shell. +</p> +<p>To include an otherwise delimiting character (including semicolon or tilde) +in a word, precede it with backslash (<code>\</code>). 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 <code>\\</code>. If the combination +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 <code>READWORD</code> or <code>READLIST</code> as well as to instruction lines. +</p> +<p>A line read with <code>READRAWLINE</code> has no special quoting mechanism; both +backslash and vertical bar (described below) are just ordinary characters. +</p> +<p>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 <code>READWORD</code> +the vertical bars are preserved in the resulting word. In data read with +<code>READLIST</code> (or resulting from a <code>PARSE</code> or <code>RUNPARSE</code> 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. +</p> +<p>Characters entered between vertical bars are forever special, even if the +word or list containing them is later reparsed with <code>PARSE</code> or <code>RUNPARSE</code>. +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 <code>RUN</code> later, and want to use parentheses. For example, +</p> +<div class="example"> +<pre class="example">PRINT RUN (SE "\( 2 "+ 3 "\)) +</pre></div> + +<p>will print 5, but +</p> +<div class="example"> +<pre class="example">RUN (SE "MAKE ""|(| 2) +</pre></div> + +<p>will create a variable whose name is open-parenthesis. (Each example would +fail if vertical bars and backslashes were interchanged.) +</p> +<p>A normally delimiting character entered within vertical bars is <code>EQUALP</code> +to the same character without the vertical bars, but can be distinguished by +the <code>VBARREDP</code> predicate. (However, <code>VBARREDP</code> returns <code>TRUE</code> +only for characters for which special treatment is necessary: whitespace, +parentheses, brackets, infix operators, backslash, vertical bar, tilde, quote, +question mark, colon, and semicolon.) +</p> + +<hr> +<a name="DATA-STRUCTURE-PRIMITIVES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OBJECTS" accesskey="n" rel="next">OBJECTS</a>, Previous: <a href="usermanual.html#INTRODUCTION" accesskey="p" rel="prev">INTRODUCTION</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Data-Structure-Primitives"></a> +<h2 class="chapter">2 Data Structure Primitives</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#CONSTRUCTORS" accesskey="1">CONSTRUCTORS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SELECTORS" accesskey="2">SELECTORS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MUTATORS" accesskey="3">MUTATORS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PREDICATES" accesskey="4">PREDICATES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#QUERIES" accesskey="5">QUERIES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="CONSTRUCTORS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SELECTORS" accesskey="n" rel="next">SELECTORS</a>, Previous: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="p" rel="prev">DATA STRUCTURE PRIMITIVES</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Constructors"></a> +<h3 class="section">2.1 Constructors</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#WORD" accesskey="1">WORD</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LIST" accesskey="2">LIST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SENTENCE" accesskey="3">SENTENCE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FPUT" accesskey="4">FPUT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LPUT" accesskey="5">LPUT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ARRAY" accesskey="6">ARRAY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MDARRAY" accesskey="7">MDARRAY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LISTTOARRAY" accesskey="8">LISTTOARRAY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ARRAYTOLIST" accesskey="9">ARRAYTOLIST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#COMBINE">COMBINE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REVERSE">REVERSE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GENSYM">GENSYM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="WORD"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LIST" accesskey="n" rel="next">LIST</a>, Previous: <a href="usermanual.html#CONSTRUCTORS" accesskey="p" rel="prev">CONSTRUCTORS</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="word"></a> +<h4 class="unnumberedsubsec">word</h4> +<a name="index-word"></a> + +<div class="example"> +<pre class="example">WORD word1 word2 +(WORD word1 word2 word3 ...) +</pre></div> + +<p>outputs a word formed by concatenating its inputs. +</p> +<hr> +<a name="LIST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SENTENCE" accesskey="n" rel="next">SENTENCE</a>, Previous: <a href="usermanual.html#WORD" accesskey="p" rel="prev">WORD</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="list"></a> +<h4 class="unnumberedsubsec">list</h4> +<a name="index-list"></a> + +<div class="example"> +<pre class="example">LIST thing1 thing2 +(LIST thing1 thing2 thing3 ...) +</pre></div> + +<p>outputs a list whose members are its inputs, which can be any Logo datum +(word, list, or array). +</p> + +<hr> +<a name="SENTENCE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FPUT" accesskey="n" rel="next">FPUT</a>, Previous: <a href="usermanual.html#LIST" accesskey="p" rel="prev">LIST</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="sentence"></a> +<h4 class="unnumberedsubsec">sentence</h4> +<a name="index-sentence"></a> +<a name="index-se"></a> + +<div class="example"> +<pre class="example">SENTENCE thing1 thing2 +SE thing1 thing2 +(SENTENCE thing1 thing2 thing3 ...) +(SE thing1 thing2 thing3 ...) +</pre></div> + +<p>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. +</p> +<hr> +<a name="FPUT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LPUT" accesskey="n" rel="next">LPUT</a>, Previous: <a href="usermanual.html#SENTENCE" accesskey="p" rel="prev">SENTENCE</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="fput"></a> +<h4 class="unnumberedsubsec">fput</h4> +<a name="index-fput"></a> + +<div class="example"> +<pre class="example">FPUT thing list +</pre></div> + +<p>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. +</p> + + +<hr> +<a name="LPUT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ARRAY" accesskey="n" rel="next">ARRAY</a>, Previous: <a href="usermanual.html#FPUT" accesskey="p" rel="prev">FPUT</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="lput"></a> +<h4 class="unnumberedsubsec">lput</h4> +<a name="index-lput"></a> + +<div class="example"> +<pre class="example">LPUT thing list +</pre></div> + +<p>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. +</p> +<hr> +<a name="ARRAY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MDARRAY" accesskey="n" rel="next">MDARRAY</a>, Previous: <a href="usermanual.html#LPUT" accesskey="p" rel="prev">LPUT</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="array"></a> +<h4 class="unnumberedsubsec">array</h4> +<a name="index-array"></a> + +<div class="example"> +<pre class="example">ARRAY size +(ARRAY size origin) +</pre></div> + +<p>outputs an array of <var>size</var> members (must be a positive integer), each of +which initially is an empty list. Array members can be selected with +<code>ITEM</code> and changed with <code>SETITEM</code>. The first member of the array is member +number 1 unless an <var>origin</var> input (must be an integer) is given, in +which case the first member of the array has that number as its index. +(Typically 0 is used as the origin if anything.) Arrays are printed by +<code>PRINT</code> and friends, and can be typed in, inside curly braces; indicate an +origin with <tt>{a b c}@0</tt><!-- /@w -->. +</p> + +<p>See <a href="usermanual.html#ITEM">ITEM</a> , +<a href="usermanual.html#SETITEM">SETITEM</a> . +</p> +<hr> +<a name="MDARRAY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LISTTOARRAY" accesskey="n" rel="next">LISTTOARRAY</a>, Previous: <a href="usermanual.html#ARRAY" accesskey="p" rel="prev">ARRAY</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="mdarray"></a> +<h4 class="unnumberedsubsec">mdarray</h4> +<a name="index-mdarray"></a> + +<div class="example"> +<pre class="example">MDARRAY sizelist (library procedure) +(MDARRAY sizelist origin) +</pre></div> + +<p>outputs a multi-dimensional array. The first input must be a list of +one or more positive integers. The second input, if present, must be a +single integer that applies to every dimension of the array. +</p> +<p>Ex: <tt>(MDARRAY [3 5] 0)</tt><!-- /@w --> outputs a two-dimensional array whose members +range from <tt>[0 0]</tt><!-- /@w --> to <tt>[2 4]</tt><!-- /@w -->. +</p> + +<hr> +<a name="LISTTOARRAY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ARRAYTOLIST" accesskey="n" rel="next">ARRAYTOLIST</a>, Previous: <a href="usermanual.html#MDARRAY" accesskey="p" rel="prev">MDARRAY</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="listtoarray"></a> +<h4 class="unnumberedsubsec">listtoarray</h4> +<a name="index-listtoarray"></a> + +<div class="example"> +<pre class="example">LISTTOARRAY list +(LISTTOARRAY list origin) +</pre></div> + +<p>outputs an array of the same size as the input list, whose members are +the members of the input list. +</p> + +<hr> +<a name="ARRAYTOLIST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#COMBINE" accesskey="n" rel="next">COMBINE</a>, Previous: <a href="usermanual.html#LISTTOARRAY" accesskey="p" rel="prev">LISTTOARRAY</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="arraytolist"></a> +<h4 class="unnumberedsubsec">arraytolist</h4> +<a name="index-arraytolist"></a> + +<div class="example"> +<pre class="example">ARRAYTOLIST array +</pre></div> + +<p>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. +</p> + +<hr> +<a name="COMBINE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REVERSE" accesskey="n" rel="next">REVERSE</a>, Previous: <a href="usermanual.html#ARRAYTOLIST" accesskey="p" rel="prev">ARRAYTOLIST</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="combine"></a> +<h4 class="unnumberedsubsec">combine</h4> +<a name="index-combine"></a> + +<div class="example"> +<pre class="example">COMBINE thing1 thing2 (library procedure) +</pre></div> + +<p>if <var>thing2</var> is a word, outputs <tt>WORD thing1 thing2</tt><!-- /@w -->. If <var>thing2</var> +is a list, outputs <tt>FPUT thing1 thing2</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#WORD">WORD</a> , +<a href="usermanual.html#FPUT">FPUT</a> +</p> +<hr> +<a name="REVERSE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GENSYM" accesskey="n" rel="next">GENSYM</a>, Previous: <a href="usermanual.html#COMBINE" accesskey="p" rel="prev">COMBINE</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="reverse"></a> +<h4 class="unnumberedsubsec">reverse</h4> +<a name="index-reverse"></a> + +<div class="example"> +<pre class="example">REVERSE list (library procedure) +</pre></div> + +<p>outputs a list whose members are the members of the input list, in +reverse order. +</p> +<hr> +<a name="GENSYM"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#REVERSE" accesskey="p" rel="prev">REVERSE</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="gensym"></a> +<h4 class="unnumberedsubsec">gensym</h4> +<a name="index-gensym"></a> + +<div class="example"> +<pre class="example">GENSYM (library procedure) +</pre></div> + +<p>outputs a unique word each time it’s invoked. The words are of the form +<code>G1</code>, <code>G2</code>, etc. +</p> +<hr> +<a name="SELECTORS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MUTATORS" accesskey="n" rel="next">MUTATORS</a>, Previous: <a href="usermanual.html#CONSTRUCTORS" accesskey="p" rel="prev">CONSTRUCTORS</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Data-Selectors"></a> +<h3 class="section">2.2 Data Selectors</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#FIRST" accesskey="1">FIRST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FIRSTS" accesskey="2">FIRSTS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LAST" accesskey="3">LAST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BUTFIRST" accesskey="4">BUTFIRST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BUTFIRSTS" accesskey="5">BUTFIRSTS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BUTLAST" accesskey="6">BUTLAST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ITEM" accesskey="7">ITEM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MDITEM" accesskey="8">MDITEM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PICK" accesskey="9">PICK</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REMOVE">REMOVE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REMDUP">REMDUP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#QUOTED">QUOTED</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="FIRST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FIRSTS" accesskey="n" rel="next">FIRSTS</a>, Previous: <a href="usermanual.html#SELECTORS" accesskey="p" rel="prev">SELECTORS</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="first"></a> +<h4 class="unnumberedsubsec">first</h4> +<a name="index-first"></a> + +<div class="example"> +<pre class="example">FIRST thing +</pre></div> + +<p>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 <em>index of</em> the +first member of the array). +</p> +<hr> +<a name="FIRSTS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LAST" accesskey="n" rel="next">LAST</a>, Previous: <a href="usermanual.html#FIRST" accesskey="p" rel="prev">FIRST</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="firsts"></a> +<h4 class="unnumberedsubsec">firsts</h4> +<a name="index-firsts"></a> + +<div class="example"> +<pre class="example">FIRSTS list +</pre></div> + +<p>outputs a list containing the <code>FIRST</code> 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 +</p> +<div class="example"> +<pre class="example">to firsts :list +output map "first :list +end +</pre></div> + +<p>but is provided as a primitive in order to speed up the iteration tools +<code>MAP</code>, <code>MAP.SE</code>, and <code>FOREACH</code>. +</p> +<div class="example"> +<pre class="example">to transpose :matrix +if emptyp first :matrix [op []] +op fput firsts :matrix transpose bfs :matrix +end +</pre></div> + +<hr> +<a name="LAST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BUTFIRST" accesskey="n" rel="next">BUTFIRST</a>, Previous: <a href="usermanual.html#FIRSTS" accesskey="p" rel="prev">FIRSTS</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="last"></a> +<h4 class="unnumberedsubsec">last</h4> +<a name="index-last"></a> + +<div class="example"> +<pre class="example">LAST wordorlist +</pre></div> + +<p>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. +</p> +<hr> +<a name="BUTFIRST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BUTFIRSTS" accesskey="n" rel="next">BUTFIRSTS</a>, Previous: <a href="usermanual.html#LAST" accesskey="p" rel="prev">LAST</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="butfirst"></a> +<h4 class="unnumberedsubsec">butfirst</h4> +<a name="index-butfirst"></a> +<a name="index-bf"></a> + +<div class="example"> +<pre class="example">BUTFIRST wordorlist +BF wordorlist +</pre></div> + +<p>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. +</p> +<hr> +<a name="BUTFIRSTS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BUTLAST" accesskey="n" rel="next">BUTLAST</a>, Previous: <a href="usermanual.html#BUTFIRST" accesskey="p" rel="prev">BUTFIRST</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="butfirsts"></a> +<h4 class="unnumberedsubsec">butfirsts</h4> +<a name="index-butfirsts"></a> +<a name="index-bfs"></a> + +<div class="example"> +<pre class="example">BUTFIRSTS list +BFS list +</pre></div> + +<p>outputs a list containing the <code>BUTFIRST</code> 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 +</p> +<div class="example"> +<pre class="example">to butfirsts :list +output map "butfirst :list +end +</pre></div> + +<p>but is provided as a primitive in order to speed up the iteration tools +<code>MAP</code>, <code>MAP.SE</code>, and <code>FOREACH</code>. +</p> +<hr> +<a name="BUTLAST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ITEM" accesskey="n" rel="next">ITEM</a>, Previous: <a href="usermanual.html#BUTFIRSTS" accesskey="p" rel="prev">BUTFIRSTS</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="butlast"></a> +<h4 class="unnumberedsubsec">butlast</h4> +<a name="index-butlast"></a> +<a name="index-bl"></a> + +<div class="example"> +<pre class="example">BUTLAST wordorlist +BL wordorlist +</pre></div> + +<p>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. +</p> +<hr> +<a name="ITEM"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MDITEM" accesskey="n" rel="next">MDITEM</a>, Previous: <a href="usermanual.html#BUTLAST" accesskey="p" rel="prev">BUTLAST</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="item"></a> +<h4 class="unnumberedsubsec">item</h4> +<a name="index-item"></a> + +<div class="example"> +<pre class="example">ITEM index thing +</pre></div> + +<p>if the <var>thing</var> is a word, outputs the <var>index</var>th character of the word. +If the <var>thing</var> is a list, outputs the <var>index</var>th member of the list. If +the <var>thing</var> is an array, outputs the <var>index</var>th member of the array. +<var>Index</var> starts at 1 for words and lists; the starting index of an array +is specified when the array is created. +</p> +<hr> +<a name="MDITEM"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PICK" accesskey="n" rel="next">PICK</a>, Previous: <a href="usermanual.html#ITEM" accesskey="p" rel="prev">ITEM</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="mditem"></a> +<h4 class="unnumberedsubsec">mditem</h4> +<a name="index-mditem"></a> + +<div class="example"> +<pre class="example">MDITEM indexlist array (library procedure) +</pre></div> + +<p>outputs the member of the multidimensional <var>array</var> selected by the list +of numbers <var>indexlist</var>. +</p> +<hr> +<a name="PICK"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REMOVE" accesskey="n" rel="next">REMOVE</a>, Previous: <a href="usermanual.html#MDITEM" accesskey="p" rel="prev">MDITEM</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pick"></a> +<h4 class="unnumberedsubsec">pick</h4> +<a name="index-pick"></a> + +<div class="example"> +<pre class="example">PICK list (library procedure) +</pre></div> + +<p>outputs a randomly chosen member of the input list. +</p> +<hr> +<a name="REMOVE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REMDUP" accesskey="n" rel="next">REMDUP</a>, Previous: <a href="usermanual.html#PICK" accesskey="p" rel="prev">PICK</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="remove"></a> +<h4 class="unnumberedsubsec">remove</h4> +<a name="index-remove"></a> + +<div class="example"> +<pre class="example">REMOVE thing list (library procedure) +</pre></div> + +<p>outputs a copy of <var>list</var> with every member equal to <var>thing</var> removed. +</p> +<hr> +<a name="REMDUP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#QUOTED" accesskey="n" rel="next">QUOTED</a>, Previous: <a href="usermanual.html#REMOVE" accesskey="p" rel="prev">REMOVE</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="remdup"></a> +<h4 class="unnumberedsubsec">remdup</h4> +<a name="index-remdup"></a> + +<div class="example"> +<pre class="example">REMDUP list (library procedure) +</pre></div> + +<p>outputs a copy of <var>list</var> with duplicate members removed. If two or more +members of the input are equal, the rightmost of those members is the +one that remains in the output. +</p> +<hr> +<a name="QUOTED"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#REMDUP" accesskey="p" rel="prev">REMDUP</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="quoted"></a> +<h4 class="unnumberedsubsec">quoted</h4> +<a name="index-quoted"></a> + +<div class="example"> +<pre class="example">QUOTED thing (library procedure) +</pre></div> + +<p>outputs its input, if a list; outputs its input with a quotation mark +prepended, if a word. +</p> + + +<hr> +<a name="MUTATORS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PREDICATES" accesskey="n" rel="next">PREDICATES</a>, Previous: <a href="usermanual.html#SELECTORS" accesskey="p" rel="prev">SELECTORS</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Data-Mutators"></a> +<h3 class="section">2.3 Data Mutators</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETITEM" accesskey="1">SETITEM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MDSETITEM" accesskey="2">MDSETITEM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#dSETFIRST" accesskey="3">dSETFIRST</a>:</td><td> </td><td align="left" valign="top">SETFIRST +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#dSETBF" accesskey="4">dSETBF</a>:</td><td> </td><td align="left" valign="top">SETBF +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#dSETITEM" accesskey="5">dSETITEM</a>:</td><td> </td><td align="left" valign="top">SETITEM +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PUSH" accesskey="6">PUSH</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#POP" accesskey="7">POP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#QUEUE" accesskey="8">QUEUE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#DEQUEUE" accesskey="9">DEQUEUE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="SETITEM"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MDSETITEM" accesskey="n" rel="next">MDSETITEM</a>, Previous: <a href="usermanual.html#MUTATORS" accesskey="p" rel="prev">MUTATORS</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setitem"></a> +<h4 class="unnumberedsubsec">setitem</h4> +<a name="index-setitem"></a> + +<div class="example"> +<pre class="example">SETITEM index array value +</pre></div> + +<p>command. Replaces the <var>index</var>th member of <var>array</var> with the new <var>value</var>. +Ensures that the resulting array is not circular, i.e., <var>value</var> may not +be a list or array that contains <var>array</var>. +</p> +<hr> +<a name="MDSETITEM"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#dSETFIRST" accesskey="n" rel="next">dSETFIRST</a>, Previous: <a href="usermanual.html#SETITEM" accesskey="p" rel="prev">SETITEM</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="mdsetitem"></a> +<h4 class="unnumberedsubsec">mdsetitem</h4> +<a name="index-mdsetitem"></a> + +<div class="example"> +<pre class="example">MDSETITEM indexlist array value (library procedure) +</pre></div> + +<p>command. Replaces the member of <var>array</var> chosen by <var>indexlist</var> with the +new <var>value</var>. +</p> +<hr> +<a name="dSETFIRST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#dSETBF" accesskey="n" rel="next">dSETBF</a>, Previous: <a href="usermanual.html#MDSETITEM" accesskey="p" rel="prev">MDSETITEM</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_002esetfirst"></a> +<h4 class="unnumberedsubsec">.setfirst</h4> +<a name="index-_002esetfirst"></a> + +<div class="example"> +<pre class="example">.SETFIRST list value +</pre></div> + +<p>command. Changes the first member of <var>list</var> to be <var>value</var>. +</p> +<p>WARNING: Primitives whose names start with a period are <strong>dangerous</strong>. +Their use by non-experts is not recommended. The use of <code>.SETFIRST</code> 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. +</p> +<hr> +<a name="dSETBF"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#dSETITEM" accesskey="n" rel="next">dSETITEM</a>, Previous: <a href="usermanual.html#dSETFIRST" accesskey="p" rel="prev">dSETFIRST</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_002esetbf"></a> +<h4 class="unnumberedsubsec">.setbf</h4> +<a name="index-_002esetbf"></a> + +<div class="example"> +<pre class="example">.SETBF list value +</pre></div> + +<p>command. Changes the butfirst of <var>list</var> to be <var>value</var>. +</p> +<p>WARNING: Primitives whose names start with a period are <strong>dangerous</strong>. +Their use by non-experts is not recommended. The use of <code>.SETBF</code> 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; or to Logo crashes and coredumps if the +butfirst of a list is not itself a list. +</p> +<hr> +<a name="dSETITEM"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PUSH" accesskey="n" rel="next">PUSH</a>, Previous: <a href="usermanual.html#dSETBF" accesskey="p" rel="prev">dSETBF</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_002esetitem"></a> +<h4 class="unnumberedsubsec">.setitem</h4> +<a name="index-_002esetitem"></a> + +<div class="example"> +<pre class="example">.SETITEM index array value +</pre></div> + +<p>command. Changes the <var>index</var>th member of <var>array</var> to be <var>value</var>, +like <code>SETITEM</code>, but without checking for circularity. +</p> +<p>WARNING: Primitives whose names start with a period are <b>dangerous</b>. +Their use by non-experts is not recommended. The use of <code>.SETITEM</code> can +lead to circular arrays, which will get some Logo primitives into +infinite loops. +</p> +<p>See <a href="usermanual.html#SETITEM">SETITEM</a>. +</p> +<hr> +<a name="PUSH"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#POP" accesskey="n" rel="next">POP</a>, Previous: <a href="usermanual.html#dSETITEM" accesskey="p" rel="prev">dSETITEM</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="push"></a> +<h4 class="unnumberedsubsec">push</h4> +<a name="index-push"></a> + +<div class="example"> +<pre class="example">PUSH stackname thing (library procedure) +</pre></div> + +<p>command. Adds the <var>thing</var> to the stack that is the value of the +variable whose name is <var>stackname</var>. 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. +</p> +<hr> +<a name="POP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#QUEUE" accesskey="n" rel="next">QUEUE</a>, Previous: <a href="usermanual.html#PUSH" accesskey="p" rel="prev">PUSH</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pop"></a> +<h4 class="unnumberedsubsec">pop</h4> +<a name="index-pop"></a> + +<div class="example"> +<pre class="example">POP stackname (library procedure) +</pre></div> + +<p>outputs the most recently <code>PUSH</code>ed member of the stack that is the value +of the variable whose name is <var>stackname</var> and removes that member from +the stack. +</p> +<hr> +<a name="QUEUE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#DEQUEUE" accesskey="n" rel="next">DEQUEUE</a>, Previous: <a href="usermanual.html#POP" accesskey="p" rel="prev">POP</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="queue"></a> +<h4 class="unnumberedsubsec">queue</h4> +<a name="index-queue"></a> + +<div class="example"> +<pre class="example">QUEUE queuename thing (library procedure) +</pre></div> + +<p>command. Adds the <var>thing</var> to the queue that is the value of the +variable whose name is <var>queuename</var>. 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. +</p> +<hr> +<a name="DEQUEUE"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#QUEUE" accesskey="p" rel="prev">QUEUE</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="dequeue"></a> +<h4 class="unnumberedsubsec">dequeue</h4> +<a name="index-dequeue"></a> + +<div class="example"> +<pre class="example">DEQUEUE queuename (library procedure) +</pre></div> + +<p>outputs the least recently <code>QUEUE</code>d member of the queue that is the value +of the variable whose name is <var>queuename</var> and removes that member from +the queue. +</p> + +<hr> +<a name="PREDICATES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#QUERIES" accesskey="n" rel="next">QUERIES</a>, Previous: <a href="usermanual.html#MUTATORS" accesskey="p" rel="prev">MUTATORS</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Predicates"></a> +<h3 class="section">2.4 Predicates</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#WORDP" accesskey="1">WORDP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LISTP" accesskey="2">LISTP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ARRAYP" accesskey="3">ARRAYP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EMPTYP" accesskey="4">EMPTYP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EQUALP" accesskey="5">EQUALP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NOTEQUALP" accesskey="6">NOTEQUALP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BEFOREP" accesskey="7">BEFOREP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#dEQ" accesskey="8">dEQ</a>:</td><td> </td><td align="left" valign="top">EQ +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MEMBERP" accesskey="9">MEMBERP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SUBSTRINGP">SUBSTRINGP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NUMBERP">NUMBERP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#VBARREDP">VBARREDP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="WORDP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LISTP" accesskey="n" rel="next">LISTP</a>, Previous: <a href="usermanual.html#PREDICATES" accesskey="p" rel="prev">PREDICATES</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="wordp"></a> +<h4 class="unnumberedsubsec">wordp</h4> +<a name="index-wordp"></a> + +<div class="example"> +<pre class="example">WORDP thing +WORD? thing +</pre></div> + +<p>outputs <code>TRUE</code> if the input is a word, <code>FALSE</code> otherwise. +</p> +<hr> +<a name="LISTP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ARRAYP" accesskey="n" rel="next">ARRAYP</a>, Previous: <a href="usermanual.html#WORDP" accesskey="p" rel="prev">WORDP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="listp"></a> +<h4 class="unnumberedsubsec">listp</h4> +<a name="index-listp"></a> +<a name="index-list_003f"></a> + +<div class="example"> +<pre class="example">LISTP thing +LIST? thing +</pre></div> + +<p>outputs <code>TRUE</code> if the input is a list, <code>FALSE</code> otherwise. +</p> +<hr> +<a name="ARRAYP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EMPTYP" accesskey="n" rel="next">EMPTYP</a>, Previous: <a href="usermanual.html#LISTP" accesskey="p" rel="prev">LISTP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="arrayp"></a> +<h4 class="unnumberedsubsec">arrayp</h4> +<a name="index-arrayp"></a> +<a name="index-array_003f"></a> + +<div class="example"> +<pre class="example">ARRAYP thing +ARRAY? thing +</pre></div> + +<p>outputs <code>TRUE</code> if the input is an array, <code>FALSE</code> otherwise. +</p> +<hr> +<a name="EMPTYP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EQUALP" accesskey="n" rel="next">EQUALP</a>, Previous: <a href="usermanual.html#ARRAYP" accesskey="p" rel="prev">ARRAYP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="emptyp"></a> +<h4 class="unnumberedsubsec">emptyp</h4> +<a name="index-emptyp"></a> +<a name="index-empty_003f"></a> + +<div class="example"> +<pre class="example">EMPTYP thing +EMPTY? thing +</pre></div> + +<p>outputs <code>TRUE</code> if the input is the empty word or the empty list, <code>FALSE</code> +otherwise. +</p> +<hr> +<a name="EQUALP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NOTEQUALP" accesskey="n" rel="next">NOTEQUALP</a>, Previous: <a href="usermanual.html#EMPTYP" accesskey="p" rel="prev">EMPTYP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="equalp"></a> +<h4 class="unnumberedsubsec">equalp</h4> +<a name="index-equalp"></a> +<a name="index-equal_003f"></a> +<a name="index-_003d"></a> + +<div class="example"> +<pre class="example">EQUALP thing1 thing2 +EQUAL? thing1 thing2 +thing1 = thing2 +</pre></div> + +<p>outputs <code>TRUE</code> if the inputs are equal, <code>FALSE</code> otherwise. Two numbers are +equal if they have the same numeric value. Two non-numeric words are +equal if they contain the same characters in the same order. If there +is a variable named <code>CASEIGNOREDP</code> whose value is <code>TRUE</code>, 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 <code>SETITEM</code> on one of them will also +change the other.) +</p> +<p>See <a href="usermanual.html#CASEIGNOREDP">CASEIGNOREDP</a> , +<a href="usermanual.html#SETITEM">SETITEM</a> +</p> +<hr> +<a name="NOTEQUALP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BEFOREP" accesskey="n" rel="next">BEFOREP</a>, Previous: <a href="usermanual.html#EQUALP" accesskey="p" rel="prev">EQUALP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="notequalp"></a> +<h4 class="unnumberedsubsec">notequalp</h4> +<a name="index-notequalp"></a> +<a name="index-notequal_003f"></a> +<a name="index-_003c_003e"></a> + +<div class="example"> +<pre class="example">NOTEQUALP thing1 thing2 +NOTEQUAL? thing1 thing2 +thing1 <> thing2 +</pre></div> + +<p>outputs <code>FALSE</code> if the inputs are equal, <code>TRUE</code> otherwise. See <code>EQUALP</code> +for the meaning of equality for different data types. +</p> +<hr> +<a name="BEFOREP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#dEQ" accesskey="n" rel="next">dEQ</a>, Previous: <a href="usermanual.html#NOTEQUALP" accesskey="p" rel="prev">NOTEQUALP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="beforep"></a> +<h4 class="unnumberedsubsec">beforep</h4> +<a name="index-beforep"></a> +<a name="index-before_003f"></a> + +<div class="example"> +<pre class="example">BEFOREP word1 word2 +BEFORE? word1 word2 +</pre></div> + +<p>outputs <code>TRUE</code> if <var>word1</var> comes before <var>word2</var> in ASCII collating sequence +(for words of letters, in alphabetical order). Case-sensitivity is +determined by the value of <code>CASEIGNOREDP</code>. Note that if the inputs are +numbers, the result may not be the same as with <code>LESSP</code>; for example, +<tt>BEFOREP 3 12</tt><!-- /@w --> is false because 3 collates after 1. +</p> +<p>See <a href="usermanual.html#CASEIGNOREDP">CASEIGNOREDP</a> , +<a href="usermanual.html#LESSP">LESSP</a> +</p> +<hr> +<a name="dEQ"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MEMBERP" accesskey="n" rel="next">MEMBERP</a>, Previous: <a href="usermanual.html#BEFOREP" accesskey="p" rel="prev">BEFOREP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_002eeq"></a> +<h4 class="unnumberedsubsec">.eq</h4> +<a name="index-_002eeq"></a> + +<div class="example"> +<pre class="example">.EQ thing1 thing2 +</pre></div> + +<p>outputs <code>TRUE</code> if its two inputs are the same datum, so that applying a +mutator to one will change the other as well. Outputs <code>FALSE</code> otherwise, +even if the inputs are equal in value. +</p> +<p>WARNING: Primitives whose names start with a period are <strong>dangerous</strong>. +Their use by non-experts is not recommended. The use of mutators can +lead to circular data structures, infinite loops, or Logo crashes. +</p> +<hr> +<a name="MEMBERP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SUBSTRINGP" accesskey="n" rel="next">SUBSTRINGP</a>, Previous: <a href="usermanual.html#dEQ" accesskey="p" rel="prev">dEQ</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="memberp"></a> +<h4 class="unnumberedsubsec">memberp</h4> +<a name="index-memberp"></a> +<a name="index-member_003f"></a> + +<div class="example"> +<pre class="example">MEMBERP thing1 thing2 +MEMBER? thing1 thing2 +</pre></div> + +<p>if <var>thing2</var> is a list or an array, outputs <code>TRUE</code> if <var>thing1</var> is +<code>EQUALP</code> to a member of <var>thing2</var>, <code>FALSE</code> otherwise. If +<var>thing2</var> is a word, outputs <code>TRUE</code> if <var>thing1</var> is a one-character +word <code>EQUALP</code> to a character of <var>thing2</var>, <code>FALSE</code> otherwise. +</p> +<p>See <a href="usermanual.html#EQUALP">EQUALP</a> . +</p> +<hr> +<a name="SUBSTRINGP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NUMBERP" accesskey="n" rel="next">NUMBERP</a>, Previous: <a href="usermanual.html#MEMBERP" accesskey="p" rel="prev">MEMBERP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="substringp"></a> +<h4 class="unnumberedsubsec">substringp</h4> +<a name="index-substringp"></a> +<a name="index-substring_003f"></a> + +<div class="example"> +<pre class="example">SUBSTRINGP thing1 thing2 +SUBSTRING? thing1 thing2 +</pre></div> + +<p>if <var>thing1</var> or <var>thing2</var> is a list or an array, outputs <code>FALSE</code>. If +<var>thing2</var> is a word, outputs <code>TRUE</code> if <var>thing1</var> is <code>EQUALP</code> to a substring of +<var>thing2</var>, <code>FALSE</code> otherwise. +</p> +<p>See <a href="usermanual.html#EQUALP">EQUALP</a> . +</p> +<hr> +<a name="NUMBERP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#VBARREDP" accesskey="n" rel="next">VBARREDP</a>, Previous: <a href="usermanual.html#SUBSTRINGP" accesskey="p" rel="prev">SUBSTRINGP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="numberp"></a> +<h4 class="unnumberedsubsec">numberp</h4> +<a name="index-numberp"></a> +<a name="index-number_003f"></a> + +<div class="example"> +<pre class="example">NUMBERP thing +NUMBER? thing +</pre></div> + +<p>outputs <code>TRUE</code> if the input is a number, <code>FALSE</code> otherwise. +</p> +<hr> +<a name="VBARREDP"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#NUMBERP" accesskey="p" rel="prev">NUMBERP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="vbarredp"></a> +<h4 class="unnumberedsubsec">vbarredp</h4> +<a name="index-vbarredp"></a> +<a name="index-vbarred_003f"></a> + +<div class="example"> +<pre class="example">VBARREDP char +VBARRED? char +BACKSLASHEDP char (library procedure) +BACKSLASHED? char (library procedure) +</pre></div> + +<p>outputs <code>TRUE</code> if the input character was originally entered into Logo +within vertical bars (|) to prevent its usual special syntactic meaning, +<code>FALSE</code> otherwise. (Outputs <code>TRUE</code> only if the character is a +backslashed space, tab, newline, or one of <code>()[]+-*/=<>":;\~?|</code> ) +</p> +<p>The names <code>BACKSLASHEDP</code> and <code>BACKSLASHED?</code> are included in the +Logo library for backward compatibility with the former names of this +primitive, although it does <em>not</em> output <code>TRUE</code> for characters +originally entered with backslashes. +</p> + + +<hr> +<a name="QUERIES"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#PREDICATES" accesskey="p" rel="prev">PREDICATES</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Queries"></a> +<h3 class="section">2.5 Queries</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#COUNT" accesskey="1">COUNT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ASCII" accesskey="2">ASCII</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RAWASCII" accesskey="3">RAWASCII</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CHAR" accesskey="4">CHAR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MEMBER" accesskey="5">MEMBER</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOWERCASE" accesskey="6">LOWERCASE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UPPERCASE" accesskey="7">UPPERCASE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#STANDOUT" accesskey="8">STANDOUT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PARSE" accesskey="9">PARSE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RUNPARSE">RUNPARSE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="COUNT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ASCII" accesskey="n" rel="next">ASCII</a>, Previous: <a href="usermanual.html#QUERIES" accesskey="p" rel="prev">QUERIES</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="count"></a> +<h4 class="unnumberedsubsec">count</h4> +<a name="index-count"></a> + +<div class="example"> +<pre class="example">COUNT thing +</pre></div> + +<p>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.) +</p> +<hr> +<a name="ASCII"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RAWASCII" accesskey="n" rel="next">RAWASCII</a>, Previous: <a href="usermanual.html#COUNT" accesskey="p" rel="prev">COUNT</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="ascii"></a> +<h4 class="unnumberedsubsec">ascii</h4> +<a name="index-ascii"></a> + +<div class="example"> +<pre class="example">ASCII char +</pre></div> + +<p>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 +<code>RAWASCII</code>.) +</p> +<hr> +<a name="RAWASCII"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CHAR" accesskey="n" rel="next">CHAR</a>, Previous: <a href="usermanual.html#ASCII" accesskey="p" rel="prev">ASCII</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="rawascii"></a> +<h4 class="unnumberedsubsec">rawascii</h4> +<a name="index-rawascii"></a> + +<div class="example"> +<pre class="example">RAWASCII char +</pre></div> + +<p>outputs the integer (between 0 and 255) that represents the input +character in the ASCII code. Interprets control characters as +representing themselves. To find out the ASCII code of an arbitrary +keystroke, use <tt>RAWASCII RC</tt><!-- /@w -->. +</p> +<hr> +<a name="CHAR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MEMBER" accesskey="n" rel="next">MEMBER</a>, Previous: <a href="usermanual.html#RAWASCII" accesskey="p" rel="prev">RAWASCII</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="char"></a> +<h4 class="unnumberedsubsec">char</h4> +<a name="index-char"></a> + +<div class="example"> +<pre class="example">CHAR int +</pre></div> + +<p>outputs the character represented in the ASCII code by the input, which +must be an integer between 0 and 255. +</p> +<p>See <a href="usermanual.html#ASCII">ASCII</a> . +</p> +<hr> +<a name="MEMBER"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOWERCASE" accesskey="n" rel="next">LOWERCASE</a>, Previous: <a href="usermanual.html#CHAR" accesskey="p" rel="prev">CHAR</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="member"></a> +<h4 class="unnumberedsubsec">member</h4> +<a name="index-member"></a> + +<div class="example"> +<pre class="example">MEMBER thing1 thing2 +</pre></div> + +<p>if <var>thing2</var> is a word or list and if <code>MEMBERP</code> with these inputs would +output <code>TRUE</code>, outputs the portion of <var>thing2</var> from the first instance of +<var>thing1</var> to the end. If <code>MEMBERP</code> would output <code>FALSE</code>, outputs the empty +word or list according to the type of <var>thing2</var>. It is an error for +<var>thing2</var> to be an array. +</p> +<p>See <a href="usermanual.html#MEMBERP">MEMBERP</a> . +</p> +<hr> +<a name="LOWERCASE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#UPPERCASE" accesskey="n" rel="next">UPPERCASE</a>, Previous: <a href="usermanual.html#MEMBER" accesskey="p" rel="prev">MEMBER</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="lowercase"></a> +<h4 class="unnumberedsubsec">lowercase</h4> +<a name="index-lowercase"></a> + +<div class="example"> +<pre class="example">LOWERCASE word +</pre></div> + +<p>outputs a copy of the input word, but with all uppercase letters changed +to the corresponding lowercase letter. +</p> +<hr> +<a name="UPPERCASE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#STANDOUT" accesskey="n" rel="next">STANDOUT</a>, Previous: <a href="usermanual.html#LOWERCASE" accesskey="p" rel="prev">LOWERCASE</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="uppercase"></a> +<h4 class="unnumberedsubsec">uppercase</h4> +<a name="index-uppercase"></a> + +<div class="example"> +<pre class="example">UPPERCASE word +</pre></div> + +<p>outputs a copy of the input word, but with all lowercase letters changed +to the corresponding uppercase letter. +</p> +<hr> +<a name="STANDOUT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PARSE" accesskey="n" rel="next">PARSE</a>, Previous: <a href="usermanual.html#UPPERCASE" accesskey="p" rel="prev">UPPERCASE</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="standout"></a> +<h4 class="unnumberedsubsec">standout</h4> +<a name="index-standout"></a> + +<div class="example"> +<pre class="example">STANDOUT thing +</pre></div> + +<p>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 <code>TYPE</code>) 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 <code>STANDOUT</code> while Logo +is running on one machine will probably not have the desired effect if +printed on another type of machine. +</p> +<p>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 +</p><div class="example"> +<pre class="example">CANINVERSE 0 +</pre></div> +<p>disables standout, but enables the display of ASCII codes above 127, and +the instruction +</p><div class="example"> +<pre class="example">CANINVERSE 1 +</pre></div> +<p>restores the default situation in which standout is enabled and the +extra graphic characters cannot be printed. +</p> +<hr> +<a name="PARSE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RUNPARSE" accesskey="n" rel="next">RUNPARSE</a>, Previous: <a href="usermanual.html#STANDOUT" accesskey="p" rel="prev">STANDOUT</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="parse"></a> +<h4 class="unnumberedsubsec">parse</h4> +<a name="index-parse"></a> + +<div class="example"> +<pre class="example">PARSE word +</pre></div> + +<p>outputs the list that would result if the input word were entered in +response to a <code>READLIST</code> operation. That is, <tt>PARSE READWORD</tt><!-- /@w --> has the same +value as <code>READLIST</code> for the same characters read. +</p> +<p>See <a href="usermanual.html#READLIST">READLIST</a> . +</p> + +<hr> +<a name="RUNPARSE"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#PARSE" accesskey="p" rel="prev">PARSE</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="runparse"></a> +<h4 class="unnumberedsubsec">runparse</h4> +<a name="index-runparse"></a> + +<div class="example"> +<pre class="example">RUNPARSE wordorlist +</pre></div> + +<p>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. +</p> + +<hr> +<a name="OBJECTS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#COMMUNICATION" accesskey="n" rel="next">COMMUNICATION</a>, Previous: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="p" rel="prev">DATA STRUCTURE PRIMITIVES</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Objects"></a> +<h2 class="chapter">3 Objects</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="1">OBJECT CONSTRUCTORS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OBJECT-MUTATORS" accesskey="2">OBJECT MUTATORS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OBJECT-SELECTORS" accesskey="3">OBJECT SELECTORS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MESSAGES" accesskey="4">MESSAGES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OBJECT-QUERIES" accesskey="5">OBJECT QUERIES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#USUAL" accesskey="6">USUAL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<p>Note: The object implementation in UCBLogo is new and still being +worked on. It also is optional and may not be compiled into the +version you are using. Bug reports and patches are greatly +appreciated. +</p> +<p>An object is a data structure, like a list, except that instead of just +a sequence of elements, an object has <var>named</var> elements, which are +either variables or procedures. (A procedure that belongs to an object +is sometimes called a <var>method</var>.) In the object metaphor, instead of +just having the one computer that does everything, we think of each +object as capable of doing things. One object can ask another object to +do something for it. +</p> +<p>At any moment, there is a <var>current object</var>. That object might have +its own version of procedures that are available globally and documented +in this manual. So workspace operations such as <code>pots</code> or +<code>erase</code> might have different effects depending on the current +object. +</p> +<p>The initial current object is called <code>logo</code>; there is an operation +that outputs that object. Every object has one or more <var>parents</var>, +and ultimately the parent of the parent... of an object has to be +<code>logo</code>. The primitive procedures in this manual belong to the +<code>logo</code> object, as do global variables. +</p> +<p>Turtles are objects. This is valuable in part so that you can customize +the behavior of a turtle. For example, if you’re simulating a +kaleidoscope, you might want half your turtles to swap the meanings of +the <code>left</code> and <code>right</code> commands. But given what’s said above +about there being a current object, and that the initial current object +is <code>logo</code>, which isn’t a turtle, you might think that you can’t run +<code>forward 100</code> without first creating a turtle object and making it +the current object. But a goal of this object system is that things +that were easy in traditional Logo should still be easy. And so, in +addition to the current object, there is also a <var>default turtle</var>; if +a turtle procedure is addressed to an object that isn’t a turtle, there +is a <code>logo</code> procedure for each turtle procedure that does the +equivalent of +</p><div class="example"> +<pre class="example">to forward :distance +ask defaultturtle [forward :distance] +end +</pre></div> + +<p>Unlike some other object oriented languages, Berkeley Logo does not +distinguish between classes (kinds of objects, which mostly specify the +procedures (the methods) of objects of that kind) and instances +(individual concrete objects, with state memory in the form of variables +belonging to the instance). Instead we use <var>prototyping</var> OOP, in +which any object (instance) can serve as the model, the prototype (the +class), for other objects. +</p> +<p>Class/instance OOP is the right thing for large teams of programmers who +need a detailed specification (in the form of class definitions) of the +desired program behavior before they start writing code. But +prototyping OOP is the right thing for tinkering, for having a glimmer +of an idea and playing around with it without a rigid specification. +So, you want to have dogs in your program. You start by <var>building a +dog</var>, one you can see on the screen as you invent behaviors such as +<code>roll.over</code> and <code>wag.tail</code>. Then you make a bunch of objects +with that dog as their parent, using that dog as a prototype. But the +prototype dog is still a particular dog, with a particular position, +color, and so on. +</p> +<p>Having said that, sometimes you do want to distinguish a class object, +which will mostly have procedures, with few or no variables, and its +instance objects, which mostly inherit procedures from the class, but +have their own individual variables. To accommodate that style of work, +we distinguish two ways to make a child object from a parent object. +<code>Kindof</code> takes an object as input, and outputs a new object that +inherits from the input object. This is how to make a subclass that is +mostly like the given class, but overrides certain behaviors. +<code>Oneof</code> makes a child object, but <code>ask</code>s the new object to +<code>exist</code> before outputting it. Every object has an <code>exist</code> +procedure, because it inherits one from <code>logo</code> if no intermediate +ancestor specifies one. The details come a little later in this +section, in the <var>Constructors</var> subsection, but this is the general +idea of how class/instance programming can be accommodated in a +prototyping OOP language. +</p> + +<hr> +<a name="OBJECT-CONSTRUCTORS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="n" rel="next">OBJECT MUTATORS</a>, Previous: <a href="usermanual.html#OBJECTS" accesskey="p" rel="prev">OBJECTS</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Constructors-1"></a> +<h3 class="section">3.1 Constructors</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#KINDOF" accesskey="1">KINDOF</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SOMETHING" accesskey="2">SOMETHING</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ONEOF" accesskey="3">ONEOF</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="KINDOF"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SOMETHING" accesskey="n" rel="next">SOMETHING</a>, Previous: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="p" rel="prev">OBJECT CONSTRUCTORS</a>, Up: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="u" rel="up">OBJECT CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="kindof"></a> +<h4 class="unnumberedsubsec">kindof</h4> +<a name="index-kindof"></a> + +<div class="example"> +<pre class="example">KINDOF object +KINDOF objectlist +(KINDOF object1 object2 ...) +</pre></div> + +<p>creates and outputs an object whose parent is <var>object</var>, or whose +parents are <var>object1</var>, <var>object2</var>, etc., or the elements of +<var>objectlist</var>. There must be at least one input, and if a list, it +may not be empty. +</p> +<hr> +<a name="SOMETHING"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ONEOF" accesskey="n" rel="next">ONEOF</a>, Previous: <a href="usermanual.html#KINDOF" accesskey="p" rel="prev">KINDOF</a>, Up: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="u" rel="up">OBJECT CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="something"></a> +<h4 class="unnumberedsubsec">something</h4> +<a name="index-something"></a> + +<div class="example"> +<pre class="example">SOMETHING +</pre></div> + +<p>creates and outputs an object whose parent is the <code>Logo</code> object. +<code>make "foo something</code> is equivalent to <code>make "foo kindof +logo</code>. +</p> + +<hr> +<a name="ONEOF"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#SOMETHING" accesskey="p" rel="prev">SOMETHING</a>, Up: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="u" rel="up">OBJECT CONSTRUCTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="oneof"></a> +<h4 class="unnumberedsubsec">oneof</h4> +<a name="index-oneof"></a> + +<div class="example"> +<pre class="example">ONEOF object +ONEOF objectlist +(ONEOF object input1 input2 ...) +(ONEOF objectlist input1 input2 ...) +</pre></div> + +<p>creates an object whose parent is <var>object</var> or whose parents are the +elements of <var>objectlist</var>. <code>Ask</code>s the new object to +<code>exist</code>, and then outputs the object. Before the object is <code>Ask</code>ed to +<code>exist</code>, all remaining inputs after the first are collected into a +list, which is made the value of the global variable <code>initlist</code>. +The convention is that <code>initlist</code> contains alternating names and +values, which serve to <var>initialize</var> the newly created object. +</p> +<p>The output of <code>oneof</code> is usually called an <var>instance</var>. +</p> +<p>See <a href="usermanual.html#EXIST">EXIST</a>. +</p> +<hr> +<a name="OBJECT-MUTATORS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="n" rel="next">OBJECT SELECTORS</a>, Previous: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="p" rel="prev">OBJECT CONSTRUCTORS</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Mutators"></a> +<h3 class="section">3.2 Mutators</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#EXIST" accesskey="1">EXIST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#HAVE" accesskey="2">HAVE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#HAVEMAKE" accesskey="3">HAVEMAKE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="EXIST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#HAVE" accesskey="n" rel="next">HAVE</a>, Previous: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="p" rel="prev">OBJECT MUTATORS</a>, Up: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="u" rel="up">OBJECT MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="exist"></a> +<h4 class="unnumberedsubsec">exist</h4> +<a name="index-exist"></a> + +<div class="example"> +<pre class="example">exist +</pre></div> + +<p>Initializes a new object. It is run automatically by <code>oneof</code>. +</p> +<p>The default <code>exist</code> procedure creates object-local variables with +the odd-numbered elements of <code>initlist</code> as names, and the +corresponding even-numbered elements as values. Thus +</p> +<div class="example"> +<pre class="example">make "obj (oneof logo "foo "bar "baz "garply) +</pre></div> + +<p>will create a new object and then tell it to <code>exist</code>, which will in +effect tell it to +</p> +<div class="example"> +<pre class="example">havemake "foo "bar +havemake "baz "garply +</pre></div> + +<p>Example: Objects do not usually keep track of their instances. To make +one that does, you can specialize <code>exist</code>: +</p> +<div class="example"> +<pre class="example">? make "recordingobject something +? ask :recordingobject [havemake "instances []] +? ask :recordingobject [to exist] +> usual.exist +> make "instances [fput self :instances] +> end +</pre></div> + +<p>See <a href="usermanual.html#ONEOF">ONEOF</a>. <a href="usermanual.html#USUAL">USUAL</a>, <a href="usermanual.html#HAVEMAKE">HAVEMAKE</a>. +</p> +<hr> +<a name="HAVE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#HAVEMAKE" accesskey="n" rel="next">HAVEMAKE</a>, Previous: <a href="usermanual.html#EXIST" accesskey="p" rel="prev">EXIST</a>, Up: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="u" rel="up">OBJECT MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="have"></a> +<h4 class="unnumberedsubsec">have</h4> +<a name="index-have"></a> + +<div class="example"> +<pre class="example">HAVE name +HAVE namelist +</pre></div> + +<p>tells the current object to create an object variable named <var>name</var>, +or object variables whose names are the elements of <var>namelist</var>. +</p> +<p>See <a href="usermanual.html#HAVEMAKE">HAVEMAKE</a>. +</p> +<hr> +<a name="HAVEMAKE"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#HAVE" accesskey="p" rel="prev">HAVE</a>, Up: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="u" rel="up">OBJECT MUTATORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="havemake"></a> +<h4 class="unnumberedsubsec">havemake</h4> +<a name="index-havemake"></a> + +<div class="example"> +<pre class="example">HAVEMAKE name value +</pre></div> + +<p>tells the current object to create an object variable named <var>name</var>, +and give it the value <var>value</var>. Since procedure input values are +computed before the procedure is run, the <var>value</var> expression may +refer to the object’s parent’s variable named <var>name</var>: +</p> +<div class="example"> +<pre class="example">havemake "size :size/2 +</pre></div> + +<p>See <a href="usermanual.html#HAVE">HAVE</a>, <a href="usermanual.html#MAKE">MAKE</a>. +</p> + +<hr> +<a name="OBJECT-SELECTORS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MESSAGES" accesskey="n" rel="next">MESSAGES</a>, Previous: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="p" rel="prev">OBJECT MUTATORS</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="selectors"></a> +<h3 class="section">3.3 selectors</h3> + +<p>All selectors apply to the current object. If you want to select from +another object, use <code>ask</code>. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#SELF" accesskey="1">SELF</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PARENTS" accesskey="2">PARENTS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MYNAMES" accesskey="3">MYNAMES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MYNAMEP" accesskey="4">MYNAMEP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MYPROCS" accesskey="5">MYPROCS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MYPROCP" accesskey="6">MYPROCP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="SELF"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PARENTS" accesskey="n" rel="next">PARENTS</a>, Previous: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="p" rel="prev">OBJECT SELECTORS</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="self"></a> +<h4 class="unnumberedsubsec">self</h4> +<a name="index-self"></a> + +<div class="example"> +<pre class="example">SELF +</pre></div> + +<p>outputs the current object (not its name!). +</p> +<hr> +<a name="PARENTS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MYNAMES" accesskey="n" rel="next">MYNAMES</a>, Previous: <a href="usermanual.html#SELF" accesskey="p" rel="prev">SELF</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="parents"></a> +<h4 class="unnumberedsubsec">parents</h4> +<a name="index-parents"></a> + +<div class="example"> +<pre class="example">PARENTS +</pre></div> + +<p>outputs a list containing the parent(s) of the current object. All +objects except for <code>logo</code> have at least one parent. Note that the +elements of the output list are objects, not names of objects. +</p> +<p>Examples: +</p> +<div class="example"> +<pre class="example">to grandparents +output remdup (map.se [ask ? [parents]] parents) +end + +to ancestors +if emptyp parents [output (list self)] ; can happen only if self=logo +output remdup sentence parents map.se [ask ? [ancestors]] parents +end +</pre></div> + +<hr> +<a name="MYNAMES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MYNAMEP" accesskey="n" rel="next">MYNAMEP</a>, Previous: <a href="usermanual.html#PARENTS" accesskey="p" rel="prev">PARENTS</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="mynames"></a> +<h4 class="unnumberedsubsec">mynames</h4> +<a name="index-mynames"></a> + +<div class="example"> +<pre class="example">MYNAMES +</pre></div> + +<p>output a list of the names of the object variables owned (not inherited) +by the current object. +</p> +<hr> +<a name="MYNAMEP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MYPROCS" accesskey="n" rel="next">MYPROCS</a>, Previous: <a href="usermanual.html#MYNAMES" accesskey="p" rel="prev">MYNAMES</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="mynamep"></a> +<h4 class="unnumberedsubsec">mynamep</h4> +<a name="index-mynamep"></a> +<a name="index-myname_003f"></a> + +<div class="example"> +<pre class="example">MYNAMEP name +MYNAME? name +</pre></div> + +<p>outputs <code>true</code> if <var>name</var> is the name of an object variable +owned (not inherited) by the current object, <code>false</code> otherwise. +</p> +<p>See <a href="usermanual.html#MYNAMES">MYNAMES</a>. +</p> +<hr> +<a name="MYPROCS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MYPROCP" accesskey="n" rel="next">MYPROCP</a>, Previous: <a href="usermanual.html#MYNAMEP" accesskey="p" rel="prev">MYNAMEP</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="myprocs"></a> +<h4 class="unnumberedsubsec">myprocs</h4> +<a name="index-myprocs"></a> + +<div class="example"> +<pre class="example">MYPROCS +</pre></div> + +<p>outputs a list of the names of the procedures (methods) owned by (not +inherited by) the current object. +</p> +<hr> +<a name="MYPROCP"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#MYPROCS" accesskey="p" rel="prev">MYPROCS</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="myprocp"></a> +<h4 class="unnumberedsubsec">myprocp</h4> +<a name="index-myprocp"></a> +<a name="index-myproc_003f"></a> + +<div class="example"> +<pre class="example">MYPROCP name +MYPROC? name +</pre></div> + +<p>outputs <code>true</code> if <var>name</var> is the name of a procedure (a method) +owned (not inherited) by the current object, <code>false</code> otherwise. +</p> +<p>See <a href="usermanual.html#MYPROCS">MYPROCS</a>. +</p> +<hr> +<a name="MESSAGES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OBJECT-QUERIES" accesskey="n" rel="next">OBJECT QUERIES</a>, Previous: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="p" rel="prev">OBJECT SELECTORS</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Messages"></a> +<h3 class="section">3.4 Messages</h3> + +<p>The procedures in this section are for changing the current object, +either permanently (unless changed again) or just to send one message. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#TALKTO" accesskey="1">TALKTO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ASK" accesskey="2">ASK</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="TALKTO"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ASK" accesskey="n" rel="next">ASK</a>, Up: <a href="usermanual.html#MESSAGES" accesskey="u" rel="up">MESSAGES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="talkto"></a> +<h4 class="unnumberedsubsec">talkto</h4> +<a name="index-talkto"></a> + +<div class="example"> +<pre class="example">TALKTO object +</pre></div> + +<p>changes the current object to <var>object</var>. (Note that the input is an +object, not the name of an object.) <code>Talkto</code> can be used only at +toplevel or within a <code>pause</code> (when typing into a Logo prompt, not +inside a procedure). +</p> +<p>See <a href="usermanual.html#ASK">ASK</a>. +</p> +<hr> +<a name="ASK"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#TALKTO" accesskey="p" rel="prev">TALKTO</a>, Up: <a href="usermanual.html#MESSAGES" accesskey="u" rel="up">MESSAGES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="ask"></a> +<h4 class="unnumberedsubsec">ask</h4> +<a name="index-ask"></a> + +<div class="example"> +<pre class="example">ASK object runlist +</pre></div> + +<p>command or operation. Temporarily sets the current object to +<var>object</var> while running the instructions or expression in +<var>runlist</var>. If <var>runlist</var> is an expression, then <code>ask</code> +outputs its value. As soon as <var>runlist</var> finishes, the current +object is set back to its previous value. +</p> +<p>See <a href="usermanual.html#TALKTO">TALKTO</a>. +</p> +<hr> +<a name="OBJECT-QUERIES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#USUAL" accesskey="n" rel="next">USUAL</a>, Previous: <a href="usermanual.html#MESSAGES" accesskey="p" rel="prev">MESSAGES</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Queries-1"></a> +<h3 class="section">3.5 Queries</h3> + +<p>These procedures are particularly useful when debugging. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#WHOSENAME" accesskey="1">WHOSENAME</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WHOSEPROC" accesskey="2">WHOSEPROC</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="WHOSENAME"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WHOSEPROC" accesskey="n" rel="next">WHOSEPROC</a>, Previous: <a href="usermanual.html#OBJECT-QUERIES" accesskey="p" rel="prev">OBJECT QUERIES</a>, Up: <a href="usermanual.html#OBJECT-QUERIES" accesskey="u" rel="up">OBJECT QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="whosename"></a> +<h4 class="unnumberedsubsec">whosename</h4> +<a name="index-whosename"></a> + +<div class="example"> +<pre class="example">WHOSENAME name +</pre></div> + +<p>outputs the object that owns the currently accessible variable named +<var>name</var>. If there is no such accessible variable, or it’s a +procedure-local variable, an error is signalled. +</p> +<hr> +<a name="WHOSEPROC"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#WHOSENAME" accesskey="p" rel="prev">WHOSENAME</a>, Up: <a href="usermanual.html#OBJECT-QUERIES" accesskey="u" rel="up">OBJECT QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="whoseproc"></a> +<h4 class="unnumberedsubsec">whoseproc</h4> +<a name="index-whoseproc"></a> + +<div class="example"> +<pre class="example">WHOSEPROC name +</pre></div> + +<p>outputs the object that owns the currently accessible procedure named +<var>name</var>. If there is no such procedure, an error is signalled. +</p> +<hr> +<a name="USUAL"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#OBJECT-QUERIES" accesskey="p" rel="prev">OBJECT QUERIES</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="usual"></a> +<h3 class="section">3.6 usual</h3> +<a name="index-usual"></a> + +<div class="example"> +<pre class="example">to foo ... +... +USUAL.foo ... +... +end +</pre></div> + +<p><code>Usual</code> is not a procedure. It’s a special notation that can be +used only inside a procedure definition; the word <code>usual</code> must be +followed by a period and then the name of the procedure being defined. +(That is, <code>usual.foo</code> can be used only inside the definition of +<code>foo</code>.) It refers to the procedure that would be inherited from a +parent if this (re)definition didn’t exist; it allows a specialized +method to invoke the ordinary version. +</p> +<div class="example"> +<pre class="example">make "bigturtle kindof turtle +ask :bigturtle [to forward :length] +usual.forward 2 * :length +end +</pre></div> + +<p>If there is no inherited procedure of the same name, then calling +<code>usual.___</code> does nothing if used as a command, or outputs an empty +list if used as an operation. +</p> +<p>If an object has multiple parents, the behavior of <code>usual</code> may be +confusing. Suppose the current object has two parents, <code>A</code> and +<code>B</code>, in that order. Then <code>usual.foo</code> in the current object’s +own <code>foo</code> method refers to object <code>A</code>’s <code>foo</code>, but +<code>usual.foo</code> within object <code>A</code>’s <code>foo</code> refers to object +<code>B</code>’s <code>foo</code> in this situation, even though <code>A</code>’s parent +isn’t <code>B</code>. +</p> +<div class="example"> +<pre class="example">make "dashedturtle kindof turtle +ask :dashedturtle [to forward :length] +if not pendownp [usual.forward :length stop] +if :length <= 5 [usual.forward :length stop] +usual.forward 5 +penup +usual.forward (ifelse :length <= 10 [:length-5] [5]) +pendown +if :length > 10 [forward :length-10] ; Note no USUAL here. +end + +ask :dashedturtle [forward 25] +- - -► + +make "bigdashed oneof (list :bigturtle :dashedturtle) +make "dashedbig oneof (list :dashedturtle :bigturtle) +ask :bigdashed [forward 25] +- - - - - ► +ask :dashedbig [forward 25] +-- -- --► +</pre></div> + + +<hr> +<a name="COMMUNICATION"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ARITHMETIC" accesskey="n" rel="next">ARITHMETIC</a>, Previous: <a href="usermanual.html#OBJECTS" accesskey="p" rel="prev">OBJECTS</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Communication"></a> +<h2 class="chapter">4 Communication</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#TRANSMITTERS" accesskey="1">TRANSMITTERS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RECEIVERS" accesskey="2">RECEIVERS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FILE-ACCESS" accesskey="3">FILE ACCESS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TERMINAL-ACCESS" accesskey="4">TERMINAL ACCESS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="TRANSMITTERS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RECEIVERS" accesskey="n" rel="next">RECEIVERS</a>, Previous: <a href="usermanual.html#COMMUNICATION" accesskey="p" rel="prev">COMMUNICATION</a>, Up: <a href="usermanual.html#COMMUNICATION" accesskey="u" rel="up">COMMUNICATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Transmitters"></a> +<h3 class="section">4.1 Transmitters</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRINT" accesskey="1">PRINT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TYPE" accesskey="2">TYPE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SHOW" accesskey="3">SHOW</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<p>Note: If there is a variable named <code>PRINTDEPTHLIMIT</code> 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 the depth limit are indicated by an ellipsis for each +one, so a too-deep list of two members will print as <tt>[... ...]</tt><!-- /@w -->. +</p> +<p>If there is a variable named <code>PRINTWIDTHLIMIT</code> 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 <code>PRINTWIDTHLIMIT</code> 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. +</p> +<p>See <a href="usermanual.html#PRINTDEPTHLIMIT">PRINTDEPTHLIMIT</a> , +<a href="usermanual.html#PRINTWIDTHLIMIT">PRINTWIDTHLIMIT</a> +</p> +<p>If there is a variable named <code>FULLPRINTP</code> whose value is <code>TRUE</code>, 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 +<code>FULLPRINTP</code> is <code>TRUE</code> then the empty word (however it was created) prints +as <code>||</code>. (Otherwise it prints as nothing at all.) +</p> +<p>See <a href="usermanual.html#FULLPRINTP">FULLPRINTP</a> . +</p> +<hr> +<a name="PRINT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TYPE" accesskey="n" rel="next">TYPE</a>, Previous: <a href="usermanual.html#TRANSMITTERS" accesskey="p" rel="prev">TRANSMITTERS</a>, Up: <a href="usermanual.html#TRANSMITTERS" accesskey="u" rel="up">TRANSMITTERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="print"></a> +<h4 class="unnumberedsubsec">print</h4> +<a name="index-print"></a> +<a name="index-pr"></a> + +<div class="example"> +<pre class="example">PRINT thing +PR thing +(PRINT thing1 thing2 ...) +(PR thing1 thing2 ...) +</pre></div> + +<p>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 around it, but brackets are printed +around sublists. Braces are always printed around arrays. +</p> +<hr> +<a name="TYPE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SHOW" accesskey="n" rel="next">SHOW</a>, Previous: <a href="usermanual.html#PRINT" accesskey="p" rel="prev">PRINT</a>, Up: <a href="usermanual.html#TRANSMITTERS" accesskey="u" rel="up">TRANSMITTERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="type"></a> +<h4 class="unnumberedsubsec">type</h4> +<a name="index-type"></a> + +<div class="example"> +<pre class="example">TYPE thing +(TYPE thing1 thing2 ...) +</pre></div> + +<p>command. Prints the input or inputs like <code>PRINT</code>, 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 <em>line buffered</em>; +that is, the characters you print using <code>TYPE</code> will not actually appear on +the screen until either a newline character is printed (for example, by +<code>PRINT</code> or <code>SHOW</code>) 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 accommodate programs that do a lot of positioned text display using +<code>TYPE</code>, Logo will force printing whenever <code>SETCURSOR</code> 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 <code>WAIT</code> command. <tt>WAIT 0</tt><!-- /@w --> will force printing +without actually waiting. +</p> +<p>See <a href="usermanual.html#SETCURSOR">SETCURSOR</a> , +<a href="usermanual.html#WAIT">WAIT</a> +</p> +<hr> +<a name="SHOW"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#TYPE" accesskey="p" rel="prev">TYPE</a>, Up: <a href="usermanual.html#TRANSMITTERS" accesskey="u" rel="up">TRANSMITTERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="show"></a> +<h4 class="unnumberedsubsec">show</h4> +<a name="index-show"></a> + +<div class="example"> +<pre class="example">SHOW thing +(SHOW thing1 thing2 ...) +</pre></div> + +<p>command. Prints the input or inputs like <code>PRINT</code>, except that if an input +is a list it is printed inside square brackets. +</p> +<p>See <a href="usermanual.html#PRINT">PRINT</a> . +</p> + +<hr> +<a name="RECEIVERS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FILE-ACCESS" accesskey="n" rel="next">FILE ACCESS</a>, Previous: <a href="usermanual.html#TRANSMITTERS" accesskey="p" rel="prev">TRANSMITTERS</a>, Up: <a href="usermanual.html#COMMUNICATION" accesskey="u" rel="up">COMMUNICATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Receivers"></a> +<h3 class="section">4.2 Receivers</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#READLIST" accesskey="1">READLIST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#READWORD" accesskey="2">READWORD</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#READRAWLINE" accesskey="3">READRAWLINE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#READCHAR" accesskey="4">READCHAR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#READCHARS" accesskey="5">READCHARS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SHELL" accesskey="6">SHELL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="READLIST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#READWORD" accesskey="n" rel="next">READWORD</a>, Previous: <a href="usermanual.html#RECEIVERS" accesskey="p" rel="prev">RECEIVERS</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="readlist"></a> +<h4 class="unnumberedsubsec">readlist</h4> +<a name="index-readlist"></a> +<a name="index-rl"></a> + +<div class="example"> +<pre class="example">READLIST +RL +</pre></div> + +<p>reads a line from the read 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, <code>READLIST</code> outputs the empty word +(not the empty list). <code>READLIST</code> 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. <code>READLIST</code> +does not, however, treat semicolon as a comment character. +</p> +<hr> +<a name="READWORD"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#READRAWLINE" accesskey="n" rel="next">READRAWLINE</a>, Previous: <a href="usermanual.html#READLIST" accesskey="p" rel="prev">READLIST</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="readword"></a> +<h4 class="unnumberedsubsec">readword</h4> +<a name="index-readword"></a> +<a name="index-rw"></a> + +<div class="example"> +<pre class="example">READWORD +RW +</pre></div> + +<p>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, <code>READWORD</code> +outputs the empty list (not the empty word). <code>READWORD</code> processes +backslash, vertical bar, and tilde characters in the read stream. In +the case of a tilde used for line continuation, the output word <em>does</em> +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. +</p> + +<hr> +<a name="READRAWLINE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#READCHAR" accesskey="n" rel="next">READCHAR</a>, Previous: <a href="usermanual.html#READWORD" accesskey="p" rel="prev">READWORD</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="readrawline"></a> +<h4 class="unnumberedsubsec">readrawline</h4> +<a name="index-readrawline"></a> + +<div class="example"> +<pre class="example">READRAWLINE +</pre></div> + +<p>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, <code>READRAWLINE</code> +outputs the empty list (not the empty word). <code>READRAWLINE</code> 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. +</p> +<p>See <a href="usermanual.html#READWORD">READWORD</a> . +</p> +<hr> +<a name="READCHAR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#READCHARS" accesskey="n" rel="next">READCHARS</a>, Previous: <a href="usermanual.html#READRAWLINE" accesskey="p" rel="prev">READRAWLINE</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="readchar"></a> +<h4 class="unnumberedsubsec">readchar</h4> +<a name="index-readchar"></a> +<a name="index-rc"></a> + +<div class="example"> +<pre class="example">READCHAR +RC +</pre></div> + +<p>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, <code>READCHAR</code> outputs the empty list (not the empty word). If the +read stream is the keyboard, echoing is turned off when <code>READCHAR</code> is +invoked, and remains off until <code>READLIST</code> or <code>READWORD</code> is invoked or a Logo +prompt is printed. Backslash, vertical bar, and tilde characters have +no special meaning in this context. +</p> +<p>See <a href="usermanual.html#READLIST">READLIST</a> . +</p> +<hr> +<a name="READCHARS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SHELL" accesskey="n" rel="next">SHELL</a>, Previous: <a href="usermanual.html#READCHAR" accesskey="p" rel="prev">READCHAR</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="readchars"></a> +<h4 class="unnumberedsubsec">readchars</h4> +<a name="index-readchars"></a> +<a name="index-rcs"></a> + +<div class="example"> +<pre class="example">READCHARS num +RCS num +</pre></div> + +<p>reads <var>num</var> 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, <code>READCHARS</code> outputs the empty list (not the empty word). If the +read stream is the keyboard, echoing is turned off when <code>READCHARS</code> is +invoked, and remains off until <code>READLIST</code> or <code>READWORD</code> is invoked or a Logo +prompt is printed. Backslash, vertical bar, and tilde characters have +no special meaning in this context. +</p> +<p>See <a href="usermanual.html#READLIST">READLIST</a> , +<a href="usermanual.html#READWORD">READWORD</a> +</p> +<hr> +<a name="SHELL"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#READCHARS" accesskey="p" rel="prev">READCHARS</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="shell"></a> +<h4 class="unnumberedsubsec">shell</h4> +<a name="index-shell"></a> + +<div class="example"> +<pre class="example">SHELL command +(SHELL command wordflag) +</pre></div> + +<p>Under Unix, outputs the result of running <var>command</var> as a shell command. +(The command is sent to ‘<samp>/bin/sh</samp>’, not ‘<samp>csh</samp>’ or other 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 <code>\\</code> 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 <code>READLIST</code>. 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 <code>READWORD</code>. Example: +</p> +<div class="example"> +<pre class="example">to dayofweek +output first first shell [date] +end +</pre></div> + +<p>This is <code>first first</code> to extract the first word of the first (and only) +line of the shell output. +</p> +<p>Under MacOS X, <code>SHELL</code> works as under Unix. <code>SHELL</code> is not +available under Mac Classic. +</p> +<p>Under DOS, <code>SHELL</code> is a command, not an operation; it sends its input to a +DOS command processor but does not collect the result of the command. +</p> +<p>Under Windows, the wxWidgets version of Logo behaves as under Unix (except +that DOS-style commands are understood; use <code>dir</code> rather than <code>ls</code>). +The non-wxWidgets version behaves like the DOS version. +</p> + +<hr> +<a name="FILE-ACCESS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="n" rel="next">TERMINAL ACCESS</a>, Previous: <a href="usermanual.html#RECEIVERS" accesskey="p" rel="prev">RECEIVERS</a>, Up: <a href="usermanual.html#COMMUNICATION" accesskey="u" rel="up">COMMUNICATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="File-Access"></a> +<h3 class="section">4.3 File Access</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETPREFIX" accesskey="1">SETPREFIX</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PREFIX" accesskey="2">PREFIX</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OPENREAD" accesskey="3">OPENREAD</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OPENWRITE" accesskey="4">OPENWRITE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OPENAPPEND" accesskey="5">OPENAPPEND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OPENUPDATE" accesskey="6">OPENUPDATE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CLOSE" accesskey="7">CLOSE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ALLOPEN" accesskey="8">ALLOPEN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CLOSEALL" accesskey="9">CLOSEALL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERASEFILE">ERASEFILE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#DRIBBLE">DRIBBLE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NODRIBBLE">NODRIBBLE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETREAD">SETREAD</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETWRITE">SETWRITE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#READER">READER</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WRITER">WRITER</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETREADPOS">SETREADPOS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETWRITEPOS">SETWRITEPOS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#READPOS">READPOS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WRITEPOS">WRITEPOS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EOFP">EOFP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FILEP">FILEP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="SETPREFIX"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PREFIX" accesskey="n" rel="next">PREFIX</a>, Previous: <a href="usermanual.html#FILE-ACCESS" accesskey="p" rel="prev">FILE ACCESS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setprefix"></a> +<h4 class="unnumberedsubsec">setprefix</h4> +<a name="index-setprefix"></a> + +<div class="example"> +<pre class="example">SETPREFIX string +</pre></div> + +<p>command. Sets a prefix that will be used as the implicit beginning of +filenames in <code>OPENREAD</code>, <code>OPENWRITE</code>, <code>OPENAPPEND</code>, +<code>OPENUPDATE</code>, <code>LOAD</code>, and <code>SAVE</code> commands. Logo will put the +appropriate separator character (slash for Unix, backslash for DOS/Windows, +colon for MacOS Classic) between the prefix and the filename entered by the +user. The input to <code>SETPREFIX</code> must be a word, unless it is the empty list, to +indicate that there should be no prefix. +</p> +<p>See <a href="usermanual.html#OPENREAD">OPENREAD</a> , +See <a href="usermanual.html#OPENWRITE">OPENWRITE</a> , +See <a href="usermanual.html#OPENAPPEND">OPENAPPEND</a> , +See <a href="usermanual.html#OPENUPDATE">OPENUPDATE</a> , +See <a href="usermanual.html#LOAD">LOAD</a> , +See <a href="usermanual.html#SAVE">SAVE</a> . +</p> +<hr> +<a name="PREFIX"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OPENREAD" accesskey="n" rel="next">OPENREAD</a>, Previous: <a href="usermanual.html#SETPREFIX" accesskey="p" rel="prev">SETPREFIX</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="prefix"></a> +<h4 class="unnumberedsubsec">prefix</h4> +<a name="index-prefix"></a> + +<div class="example"> +<pre class="example">PREFIX +</pre></div> + +<p>outputs the current file prefix, or [] if there is no prefix. +</p> +<p>See <a href="usermanual.html#SETPREFIX">SETPREFIX</a> . +</p> + +<hr> +<a name="OPENREAD"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OPENWRITE" accesskey="n" rel="next">OPENWRITE</a>, Previous: <a href="usermanual.html#PREFIX" accesskey="p" rel="prev">PREFIX</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="openread"></a> +<h4 class="unnumberedsubsec">openread</h4> +<a name="index-openread"></a> + +<div class="example"> +<pre class="example">OPENREAD filename +</pre></div> + +<p>command. Opens the named file for reading. The read position is +initially at the beginning of the file. +</p> +<hr> +<a name="OPENWRITE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OPENAPPEND" accesskey="n" rel="next">OPENAPPEND</a>, Previous: <a href="usermanual.html#OPENREAD" accesskey="p" rel="prev">OPENREAD</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="openwrite"></a> +<h4 class="unnumberedsubsec">openwrite</h4> +<a name="index-openwrite"></a> + +<div class="example"> +<pre class="example">OPENWRITE filename +</pre></div> + +<p>command. Opens the named file for writing. If the file already +existed, the old version is deleted and a new, empty file created. +</p> +<p><code>OPENWRITE</code>, but not the other <code>OPEN</code> 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 <code>SETWRITE</code> is +done with this same list (in the sense of .EQ, not a copy, so +you must do something like +</p> +<div class="example"> +<pre class="example">? make "buf [foo 100] +? openwrite :buf +? setwrite :buf + [...] +? close :buf +</pre></div> + +<p>and not just +</p> +<div class="example"> +<pre class="example">? openwrite [foo 100] +? setwrite [foo 100] +</pre></div> + +<p>and so on), the printed characters are stored in the buffer; +when a <code>CLOSE</code> is done with the same list as input, the characters +from the buffer (treated as one long word, even if spaces and +newlines are included) become the value of the specified variable. +</p> +<hr> +<a name="OPENAPPEND"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OPENUPDATE" accesskey="n" rel="next">OPENUPDATE</a>, Previous: <a href="usermanual.html#OPENWRITE" accesskey="p" rel="prev">OPENWRITE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="openappend"></a> +<h4 class="unnumberedsubsec">openappend</h4> +<a name="index-openappend"></a> + +<div class="example"> +<pre class="example">OPENAPPEND filename +</pre></div> + +<p>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. +</p> +<hr> +<a name="OPENUPDATE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CLOSE" accesskey="n" rel="next">CLOSE</a>, Previous: <a href="usermanual.html#OPENAPPEND" accesskey="p" rel="prev">OPENAPPEND</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="openupdate"></a> +<h4 class="unnumberedsubsec">openupdate</h4> +<a name="index-openupdate"></a> + +<div class="example"> +<pre class="example">OPENUPDATE filename +</pre></div> + +<p>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 <code>READER</code> and <code>WRITER</code> at the +same time, then <code>SETREADPOS</code> will also affect <code>WRITEPOS</code> and vice versa. +Also, if you alternate reading and writing the same file, you must +<code>SETREADPOS</code> between a write and a read, and <code>SETWRITEPOS</code> between a read +and a write. +</p> +<p>See <a href="usermanual.html#READER">READER</a> , +<a href="usermanual.html#WRITER">WRITER</a> , +<a href="usermanual.html#SETREADPOS">SETREADPOS</a> , +<a href="usermanual.html#SETWRITEPOS">SETWRITEPOS</a> +</p> +<hr> +<a name="CLOSE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ALLOPEN" accesskey="n" rel="next">ALLOPEN</a>, Previous: <a href="usermanual.html#OPENUPDATE" accesskey="p" rel="prev">OPENUPDATE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="close"></a> +<h4 class="unnumberedsubsec">close</h4> +<a name="index-close"></a> + +<div class="example"> +<pre class="example">CLOSE filename +</pre></div> + +<p>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 <tt>SETREAD []</tt><!-- /@w --> or <tt>SETWRITE []</tt><!-- /@w --> had been done. +</p> + +<hr> +<a name="ALLOPEN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CLOSEALL" accesskey="n" rel="next">CLOSEALL</a>, Previous: <a href="usermanual.html#CLOSE" accesskey="p" rel="prev">CLOSE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="allopen"></a> +<h4 class="unnumberedsubsec">allopen</h4> +<a name="index-allopen"></a> + +<div class="example"> +<pre class="example">ALLOPEN +</pre></div> + +<p>outputs a list whose members are the names of all files currently open. +This list does not include the dribble file, if any. +</p> +<hr> +<a name="CLOSEALL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERASEFILE" accesskey="n" rel="next">ERASEFILE</a>, Previous: <a href="usermanual.html#ALLOPEN" accesskey="p" rel="prev">ALLOPEN</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="closeall"></a> +<h4 class="unnumberedsubsec">closeall</h4> +<a name="index-closeall"></a> + +<div class="example"> +<pre class="example">CLOSEALL (library procedure) +</pre></div> + +<p>command. Closes all open files. Abbreviates <tt>FOREACH ALLOPEN [CLOSE ?]</tt><!-- /@w --> +</p> +<p>See <a href="usermanual.html#FOREACH">FOREACH</a> , +<a href="usermanual.html#CLOSE">CLOSE</a> +</p> +<hr> +<a name="ERASEFILE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#DRIBBLE" accesskey="n" rel="next">DRIBBLE</a>, Previous: <a href="usermanual.html#CLOSEALL" accesskey="p" rel="prev">CLOSEALL</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="erasefile"></a> +<h4 class="unnumberedsubsec">erasefile</h4> +<a name="index-erasefile"></a> +<a name="index-erf"></a> + +<div class="example"> +<pre class="example">ERASEFILE filename +ERF filename +</pre></div> + +<p>command. Erases (deletes, removes) the named file, which should not +currently be open. +</p> +<hr> +<a name="DRIBBLE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NODRIBBLE" accesskey="n" rel="next">NODRIBBLE</a>, Previous: <a href="usermanual.html#ERASEFILE" accesskey="p" rel="prev">ERASEFILE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="dribble"></a> +<h4 class="unnumberedsubsec">dribble</h4> +<a name="index-dribble"></a> + +<div class="example"> +<pre class="example">DRIBBLE filename +</pre></div> + +<p>command. Creates a new file whose name is the input, like <code>OPENWRITE</code>, +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 <code>WRITER</code>. The intent is to create a transcript +of a Logo session, including things like prompt characters and +interactions. +</p> +<p>See <a href="usermanual.html#OPENWRITE">OPENWRITE</a> , +<a href="usermanual.html#WRITER">WRITER</a> +</p> +<hr> +<a name="NODRIBBLE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETREAD" accesskey="n" rel="next">SETREAD</a>, Previous: <a href="usermanual.html#DRIBBLE" accesskey="p" rel="prev">DRIBBLE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="nodribble"></a> +<h4 class="unnumberedsubsec">nodribble</h4> +<a name="index-nodribble"></a> + +<div class="example"> +<pre class="example">NODRIBBLE +</pre></div> + +<p>command. Stops copying information into the dribble file, and closes +the file. +</p> +<hr> +<a name="SETREAD"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETWRITE" accesskey="n" rel="next">SETWRITE</a>, Previous: <a href="usermanual.html#NODRIBBLE" accesskey="p" rel="prev">NODRIBBLE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setread"></a> +<h4 class="unnumberedsubsec">setread</h4> +<a name="index-setread"></a> + +<div class="example"> +<pre class="example">SETREAD filename +</pre></div> + +<p>command. Makes the named file the read stream, used for <code>READLIST</code>, etc. +The file must already be open with <code>OPENREAD</code> or <code>OPENUPDATE</code>. 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. +</p> +<p>See <a href="usermanual.html#READLIST">READLIST</a> , +<a href="usermanual.html#OPENREAD">OPENREAD</a> , +<a href="usermanual.html#OPENUPDATE">OPENUPDATE</a> +</p> +<hr> +<a name="SETWRITE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#READER" accesskey="n" rel="next">READER</a>, Previous: <a href="usermanual.html#SETREAD" accesskey="p" rel="prev">SETREAD</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setwrite"></a> +<h4 class="unnumberedsubsec">setwrite</h4> +<a name="index-setwrite"></a> + +<div class="example"> +<pre class="example">SETWRITE filename +</pre></div> + +<p>command. Makes the named file the write stream, used for <code>PRINT</code>, +etc. The file must already be open with <code>OPENWRITE</code>, <code>OPENAPPEND</code>, or +<code>OPENUPDATE</code>. 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. +</p> +<p>If the input 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 <code>.EQ</code> sense, not a copy) +has been used as input to <code>OPENWRITE</code>, 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 <code>CLOSE</code>, 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 <code>SETWRITE</code> +is done, it will be opened implicitly, but the first <code>SETWRITE</code> after +this one will implicitly close it, setting the variable and freeing +the allocated buffer. +</p> +<p>See <a href="usermanual.html#PRINT">PRINT</a> , +<a href="usermanual.html#OPENWRITE">OPENWRITE</a> ; +<a href="usermanual.html#OPENAPPEND">OPENAPPEND</a> ; +<a href="usermanual.html#OPENUPDATE">OPENUPDATE</a> +</p> +<hr> +<a name="READER"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WRITER" accesskey="n" rel="next">WRITER</a>, Previous: <a href="usermanual.html#SETWRITE" accesskey="p" rel="prev">SETWRITE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="reader"></a> +<h4 class="unnumberedsubsec">reader</h4> +<a name="index-reader"></a> + +<div class="example"> +<pre class="example">READER +</pre></div> + +<p>outputs the name of the current read stream file, or the empty list if +the read stream is the terminal. +</p> +<hr> +<a name="WRITER"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETREADPOS" accesskey="n" rel="next">SETREADPOS</a>, Previous: <a href="usermanual.html#READER" accesskey="p" rel="prev">READER</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="writer"></a> +<h4 class="unnumberedsubsec">writer</h4> +<a name="index-writer"></a> + +<div class="example"> +<pre class="example">WRITER +</pre></div> + +<p>outputs the name of the current write stream file, or the empty list if +the write stream is the screen. +</p> +<hr> +<a name="SETREADPOS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETWRITEPOS" accesskey="n" rel="next">SETWRITEPOS</a>, Previous: <a href="usermanual.html#WRITER" accesskey="p" rel="prev">WRITER</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setreadpos"></a> +<h4 class="unnumberedsubsec">setreadpos</h4> +<a name="index-setreadpos"></a> + +<div class="example"> +<pre class="example">SETREADPOS charpos +</pre></div> + +<p>command. Sets the file pointer of the read stream file so that the next +<code>READLIST</code>, etc., will begin reading at the <var>charpos</var>th character in the +file, counting from 0. (That is, <tt>SETREADPOS 0</tt><!-- /@w --> will start reading from +the beginning of the file.) Meaningless if the read stream is the +keyboard. +</p> +<p>See <a href="usermanual.html#READLIST">READLIST</a> . +</p> +<hr> +<a name="SETWRITEPOS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#READPOS" accesskey="n" rel="next">READPOS</a>, Previous: <a href="usermanual.html#SETREADPOS" accesskey="p" rel="prev">SETREADPOS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setwritepos"></a> +<h4 class="unnumberedsubsec">setwritepos</h4> +<a name="index-setwritepos"></a> + +<div class="example"> +<pre class="example">SETWRITEPOS charpos +</pre></div> + +<p>command. Sets the file pointer of the write stream file so that the +next <code>PRINT</code>, etc., will begin writing at the <var>charpos</var>th character in the +file, counting from 0. (That is, <tt>SETWRITEPOS 0</tt><!-- /@w --> will start writing from +the beginning of the file.) Meaningless if the write stream is the +screen. +</p> +<p>See <a href="usermanual.html#PRINT">PRINT</a> . +</p> +<hr> +<a name="READPOS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WRITEPOS" accesskey="n" rel="next">WRITEPOS</a>, Previous: <a href="usermanual.html#SETWRITEPOS" accesskey="p" rel="prev">SETWRITEPOS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="readpos"></a> +<h4 class="unnumberedsubsec">readpos</h4> +<a name="index-readpos"></a> + +<div class="example"> +<pre class="example">READPOS +</pre></div> + +<p>outputs the file position of the current read stream file. +</p> +<hr> +<a name="WRITEPOS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EOFP" accesskey="n" rel="next">EOFP</a>, Previous: <a href="usermanual.html#READPOS" accesskey="p" rel="prev">READPOS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="writepos"></a> +<h4 class="unnumberedsubsec">writepos</h4> +<a name="index-writepos"></a> + +<div class="example"> +<pre class="example">WRITEPOS +</pre></div> + +<p>outputs the file position of the current write stream file. +</p> +<hr> +<a name="EOFP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FILEP" accesskey="n" rel="next">FILEP</a>, Previous: <a href="usermanual.html#WRITEPOS" accesskey="p" rel="prev">WRITEPOS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="eofp"></a> +<h4 class="unnumberedsubsec">eofp</h4> +<a name="index-eofp"></a> +<a name="index-eof_003f"></a> + +<div class="example"> +<pre class="example">EOFP +EOF? +</pre></div> + +<p>predicate, outputs <code>TRUE</code> if there are no more characters to be read in +the read stream file, <code>FALSE</code> otherwise. +</p> +<hr> +<a name="FILEP"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#EOFP" accesskey="p" rel="prev">EOFP</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="filep"></a> +<h4 class="unnumberedsubsec">filep</h4> +<a name="index-filep"></a> +<a name="index-file_003f"></a> + +<div class="example"> +<pre class="example">FILEP filename +FILE? filename (library procedure) +</pre></div> + +<p>predicate, outputs <code>TRUE</code> if a file of the specified name exists and can +be read, <code>FALSE</code> otherwise. +</p> + +<hr> +<a name="TERMINAL-ACCESS"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#FILE-ACCESS" accesskey="p" rel="prev">FILE ACCESS</a>, Up: <a href="usermanual.html#COMMUNICATION" accesskey="u" rel="up">COMMUNICATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Terminal-Access"></a> +<h3 class="section">4.4 Terminal Access</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#KEYP" accesskey="1">KEYP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LINEP" accesskey="2">LINEP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CLEARTEXT" accesskey="3">CLEARTEXT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETCURSOR" accesskey="4">SETCURSOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CURSOR" accesskey="5">CURSOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETMARGINS" accesskey="6">SETMARGINS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETTEXTCOLOR" accesskey="7">SETTEXTCOLOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#INCREASEFONT" accesskey="8">INCREASEFONT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETTEXTSIZE" accesskey="9">SETTEXTSIZE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TEXTSIZE">TEXTSIZE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETFONT">SETFONT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FONT">FONT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="KEYP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LINEP" accesskey="n" rel="next">LINEP</a>, Previous: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="p" rel="prev">TERMINAL ACCESS</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="keyp"></a> +<h4 class="unnumberedsubsec">keyp</h4> +<a name="index-keyp"></a> +<a name="index-key_003f"></a> + +<div class="example"> +<pre class="example">KEYP +KEY? +</pre></div> + +<p>predicate, outputs <code>TRUE</code> if there are characters waiting to be read from +the read stream. If the read stream is a file, this is equivalent to +<tt>NOT EOFP</tt><!-- /@w -->. If the read stream is the terminal, then echoing is turned +off and the terminal is set to <code>cbreak</code> (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., <code>READLIST</code>). The Unix operating system +forgets about any pending characters when it switches modes, so the +first <code>KEYP</code> invocation will always output <code>FALSE</code>. +</p> +<p>See <a href="usermanual.html#EOFP">EOFP</a> , +<a href="usermanual.html#READLIST">READLIST</a> +</p> +<hr> +<a name="LINEP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CLEARTEXT" accesskey="n" rel="next">CLEARTEXT</a>, Previous: <a href="usermanual.html#KEYP" accesskey="p" rel="prev">KEYP</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="linep"></a> +<h4 class="unnumberedsubsec">linep</h4> +<a name="index-linep"></a> +<a name="index-line_003f"></a> + +<div class="example"> +<pre class="example">LINEP +LINE? +</pre></div> + +<p>predicate, outputs <code>TRUE</code> if there is a line waiting to be read from +the read stream. If the read stream is a file, this is equivalent to +<tt>NOT EOFP</tt><!-- /@w -->. If the read stream is the terminal, then typed characters +will be displayed and may be edited until <tt class="key">RET</tt> is pressed. +</p> +<p>See <a href="usermanual.html#EOFP">EOFP</a> . +</p> +<hr> +<a name="CLEARTEXT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETCURSOR" accesskey="n" rel="next">SETCURSOR</a>, Previous: <a href="usermanual.html#LINEP" accesskey="p" rel="prev">LINEP</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="cleartext"></a> +<h4 class="unnumberedsubsec">cleartext</h4> +<a name="index-cleartext"></a> +<a name="index-ct"></a> + +<div class="example"> +<pre class="example">CLEARTEXT +CT +</pre></div> + +<p>command. Clears the text window. +</p> +<hr> +<a name="SETCURSOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CURSOR" accesskey="n" rel="next">CURSOR</a>, Previous: <a href="usermanual.html#CLEARTEXT" accesskey="p" rel="prev">CLEARTEXT</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setcursor"></a> +<h4 class="unnumberedsubsec">setcursor</h4> +<a name="index-setcursor"></a> + +<div class="example"> +<pre class="example">SETCURSOR vector +</pre></div> + +<p>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. +</p> +<hr> +<a name="CURSOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETMARGINS" accesskey="n" rel="next">SETMARGINS</a>, Previous: <a href="usermanual.html#SETCURSOR" accesskey="p" rel="prev">SETCURSOR</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="cursor"></a> +<h4 class="unnumberedsubsec">cursor</h4> +<a name="index-cursor"></a> + +<div class="example"> +<pre class="example">CURSOR +</pre></div> + +<p>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. +</p> +<hr> +<a name="SETMARGINS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETTEXTCOLOR" accesskey="n" rel="next">SETTEXTCOLOR</a>, Previous: <a href="usermanual.html#CURSOR" accesskey="p" rel="prev">CURSOR</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setmargins"></a> +<h4 class="unnumberedsubsec">setmargins</h4> +<a name="index-setmargins"></a> + +<div class="example"> +<pre class="example">SETMARGINS vector +</pre></div> + +<p>command. The input must be a list of two numbers, as for <code>SETCURSOR</code>. +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 printed +(explicitly or implicitly) Logo will type <var>x_margin</var> spaces, and on every +invocation of <code>SETCURSOR</code> the margins will be added to the input x and y +coordinates. (<code>CURSOR</code> 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 monitors that miss the top +and left edges of the screen. +</p> +<p>See <a href="usermanual.html#SETCURSOR">SETCURSOR</a> . +</p> + +<hr> +<a name="SETTEXTCOLOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#INCREASEFONT" accesskey="n" rel="next">INCREASEFONT</a>, Previous: <a href="usermanual.html#SETMARGINS" accesskey="p" rel="prev">SETMARGINS</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="settextcolor"></a> +<h4 class="unnumberedsubsec">settextcolor</h4> +<a name="index-settextcolor"></a> +<a name="index-settc"></a> + +<div class="example"> +<pre class="example">SETTEXTCOLOR foreground background +SETTC foreground background +</pre></div> + +<p>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. +</p> +<p>Command (non-wxWidgets Windows and DOS extended only). The inputs are color +numbers, 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 characters). Using <code>STANDOUT</code> will revert to the default +text window colors. In the DOS extended (<samp>ucblogo.exe</samp>) version, colors in +textscreen mode are limited to numbers 0-7, and the coloring 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. +</p> +<p>See <a href="usermanual.html#STANDOUT">STANDOUT</a> . +</p> +<hr> +<a name="INCREASEFONT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETTEXTSIZE" accesskey="n" rel="next">SETTEXTSIZE</a>, Previous: <a href="usermanual.html#SETTEXTCOLOR" accesskey="p" rel="prev">SETTEXTCOLOR</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="increasefont"></a> +<h4 class="unnumberedsubsec">increasefont</h4> +<a name="index-increasefont"></a> +<a name="index-decreasefont"></a> + +<div class="example"> +<pre class="example">INCREASEFONT +DECREASEFONT +</pre></div> + +<p>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. +</p> +<hr> +<a name="SETTEXTSIZE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TEXTSIZE" accesskey="n" rel="next">TEXTSIZE</a>, Previous: <a href="usermanual.html#INCREASEFONT" accesskey="p" rel="prev">INCREASEFONT</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="settextsize"></a> +<h4 class="unnumberedsubsec">settextsize</h4> +<a name="index-settextsize"></a> + +<div class="example"> +<pre class="example">SETTEXTSIZE height +</pre></div> + +<p>command (wxWidgets only). Set the "point size" of the 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 <code>SETLABELHEIGHT</code> for a different approach used for +the graphics window. +</p> +<hr> +<a name="TEXTSIZE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETFONT" accesskey="n" rel="next">SETFONT</a>, Previous: <a href="usermanual.html#SETTEXTSIZE" accesskey="p" rel="prev">SETTEXTSIZE</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="textsize"></a> +<h4 class="unnumberedsubsec">textsize</h4> +<a name="index-textsize"></a> + +<div class="example"> +<pre class="example">TEXTSIZE +</pre></div> + +<p>(wxWidgets only) outputs the "point size" of the font used in the text +and edit windows. See <code>SETTEXTSIZE</code> for a discussion of font sizing. +See <code>LABELSIZE</code> for a different approach used for the graphics window. +</p> +<hr> +<a name="SETFONT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FONT" accesskey="n" rel="next">FONT</a>, Previous: <a href="usermanual.html#TEXTSIZE" accesskey="p" rel="prev">TEXTSIZE</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setfont"></a> +<h4 class="unnumberedsubsec">setfont</h4> +<a name="index-setfont"></a> + +<div class="example"> +<pre class="example">SETFONT fontname +</pre></div> + +<p>command (wxWidgets only). Set the font family used in all windows +to the one named by the input. Try <samp>Courier</samp> or <samp>Monospace</samp> 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). +</p> +<hr> +<a name="FONT"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#SETFONT" accesskey="p" rel="prev">SETFONT</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="font"></a> +<h4 class="unnumberedsubsec">font</h4> +<a name="index-font"></a> + +<div class="example"> +<pre class="example">FONT +</pre></div> + +<p>(wxWidgets only) outputs the name of the font family used in all +windows. +</p> + + +<hr> +<a name="ARITHMETIC"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="n" rel="next">LOGICAL OPERATIONS</a>, Previous: <a href="usermanual.html#COMMUNICATION" accesskey="p" rel="prev">COMMUNICATION</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Arithmetic"></a> +<h2 class="chapter">5 Arithmetic</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="1">NUMERIC OPERATIONS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="2">NUMERIC PREDICATES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RANDOM-NUMBERS" accesskey="3">RANDOM NUMBERS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRINT-FORMATTING" accesskey="4">PRINT FORMATTING</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="5">BITWISE OPERATIONS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + + +<hr> +<a name="NUMERIC-OPERATIONS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="n" rel="next">NUMERIC PREDICATES</a>, Previous: <a href="usermanual.html#ARITHMETIC" accesskey="p" rel="prev">ARITHMETIC</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Numeric-Operations"></a> +<h3 class="section">5.1 Numeric Operations</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#SUM" accesskey="1">SUM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#DIFFERENCE" accesskey="2">DIFFERENCE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MINUS" accesskey="3">MINUS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRODUCT" accesskey="4">PRODUCT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#QUOTIENT" accesskey="5">QUOTIENT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REMAINDER" accesskey="6">REMAINDER</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MODULO" accesskey="7">MODULO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#INT" accesskey="8">INT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ROUND" accesskey="9">ROUND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SQRT">SQRT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#POWER">POWER</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EXP">EXP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOG10">LOG10</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LN">LN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SIN">SIN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RADSIN">RADSIN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#COS">COS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RADCOS">RADCOS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ARCTAN">ARCTAN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RADARCTAN">RADARCTAN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ISEQ">ISEQ</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RSEQ">RSEQ</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="SUM"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#DIFFERENCE" accesskey="n" rel="next">DIFFERENCE</a>, Previous: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="p" rel="prev">NUMERIC OPERATIONS</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="sum"></a> +<h4 class="unnumberedsubsec">sum</h4> +<a name="index-sum"></a> +<a name="index-_002b"></a> + +<div class="example"> +<pre class="example">SUM num1 num2 +(SUM num1 num2 num3 ...) +num1 + num2 +</pre></div> + +<p>outputs the sum of its inputs. +</p> +<hr> +<a name="DIFFERENCE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MINUS" accesskey="n" rel="next">MINUS</a>, Previous: <a href="usermanual.html#SUM" accesskey="p" rel="prev">SUM</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="difference"></a> +<h4 class="unnumberedsubsec">difference</h4> +<a name="index-difference"></a> +<a name="index-_002d"></a> + +<div class="example"> +<pre class="example">DIFFERENCE num1 num2 +num1 - num2 +</pre></div> + +<p>outputs the difference of its inputs. Minus sign means infix difference +in ambiguous contexts (when preceded by a complete expression), unless +it is preceded by a space and followed by a nonspace. (See also <code>MINUS</code>.) +</p> +<hr> +<a name="MINUS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PRODUCT" accesskey="n" rel="next">PRODUCT</a>, Previous: <a href="usermanual.html#DIFFERENCE" accesskey="p" rel="prev">DIFFERENCE</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="minus"></a> +<h4 class="unnumberedsubsec">minus</h4> +<a name="index-minus"></a> + +<div class="example"> +<pre class="example">MINUS num +- num +</pre></div> + +<p>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: +</p> +<div class="example"> +<pre class="example">MINUS 3 + 4 means -(3+4) +- 3 + 4 means (-3)+4 +</pre></div> + +<hr> +<a name="PRODUCT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#QUOTIENT" accesskey="n" rel="next">QUOTIENT</a>, Previous: <a href="usermanual.html#MINUS" accesskey="p" rel="prev">MINUS</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="product"></a> +<h4 class="unnumberedsubsec">product</h4> +<a name="index-product"></a> +<a name="index-_002a"></a> + +<div class="example"> +<pre class="example">PRODUCT num1 num2 +(PRODUCT num1 num2 num3 ...) +num1 * num2 +</pre></div> + +<p>outputs the product of its inputs. +</p> +<hr> +<a name="QUOTIENT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REMAINDER" accesskey="n" rel="next">REMAINDER</a>, Previous: <a href="usermanual.html#PRODUCT" accesskey="p" rel="prev">PRODUCT</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="quotient"></a> +<h4 class="unnumberedsubsec">quotient</h4> +<a name="index-quotient"></a> +<a name="index-_002f"></a> + +<div class="example"> +<pre class="example">QUOTIENT num1 num2 +(QUOTIENT num) +num1 / num2 +</pre></div> + +<p>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, <tt>QUOTIENT 5 2</tt><!-- /@w --> is 2.5, not 2, but <tt>QUOTIENT 4 2</tt><!-- /@w --> +is 2, not 2.0 — it does the right thing.) With a single input, +<code>QUOTIENT</code> outputs the reciprocal of the input. +</p> +<hr> +<a name="REMAINDER"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MODULO" accesskey="n" rel="next">MODULO</a>, Previous: <a href="usermanual.html#QUOTIENT" accesskey="p" rel="prev">QUOTIENT</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="remainder"></a> +<h4 class="unnumberedsubsec">remainder</h4> +<a name="index-remainder"></a> + +<div class="example"> +<pre class="example">REMAINDER num1 num2 +</pre></div> + +<p>outputs the remainder on dividing <var>num1</var> by <var>num2</var>; both must be +integers and the result is an integer with the same sign as <var>num1</var>. +</p> +<hr> +<a name="MODULO"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#INT" accesskey="n" rel="next">INT</a>, Previous: <a href="usermanual.html#REMAINDER" accesskey="p" rel="prev">REMAINDER</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="modulo"></a> +<h4 class="unnumberedsubsec">modulo</h4> +<a name="index-modulo"></a> + +<div class="example"> +<pre class="example">MODULO num1 num2 +</pre></div> + +<p>outputs the remainder on dividing <var>num1</var> by <var>num2</var>; both must be +integers and the result is an integer with the same sign as <var>num2</var>. +</p> +<hr> +<a name="INT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ROUND" accesskey="n" rel="next">ROUND</a>, Previous: <a href="usermanual.html#MODULO" accesskey="p" rel="prev">MODULO</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="int"></a> +<h4 class="unnumberedsubsec">int</h4> +<a name="index-int"></a> + +<div class="example"> +<pre class="example">INT num +</pre></div> + +<p>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. +</p> +<hr> +<a name="ROUND"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SQRT" accesskey="n" rel="next">SQRT</a>, Previous: <a href="usermanual.html#INT" accesskey="p" rel="prev">INT</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="round"></a> +<h4 class="unnumberedsubsec">round</h4> +<a name="index-round"></a> + +<div class="example"> +<pre class="example">ROUND num +</pre></div> + +<p>outputs the nearest integer to the input. +</p> +<hr> +<a name="SQRT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#POWER" accesskey="n" rel="next">POWER</a>, Previous: <a href="usermanual.html#ROUND" accesskey="p" rel="prev">ROUND</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="sqrt"></a> +<h4 class="unnumberedsubsec">sqrt</h4> +<a name="index-sqrt"></a> + +<div class="example"> +<pre class="example">SQRT num +</pre></div> + +<p>outputs the square root of the input, which must be nonnegative. +</p> +<hr> +<a name="POWER"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EXP" accesskey="n" rel="next">EXP</a>, Previous: <a href="usermanual.html#SQRT" accesskey="p" rel="prev">SQRT</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="power"></a> +<h4 class="unnumberedsubsec">power</h4> +<a name="index-power"></a> + +<div class="example"> +<pre class="example">POWER num1 num2 +</pre></div> + +<p>outputs <var>num1</var> to the <var>num2</var> power. If <var>num1</var> is negative, then +<var>num2</var> must be an integer. +</p> +<hr> +<a name="EXP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOG10" accesskey="n" rel="next">LOG10</a>, Previous: <a href="usermanual.html#POWER" accesskey="p" rel="prev">POWER</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="exp"></a> +<h4 class="unnumberedsubsec">exp</h4> +<a name="index-exp"></a> + +<div class="example"> +<pre class="example">EXP num +</pre></div> + +<p>outputs <i>e</i> (2.718281828+) to the input power. +</p> +<hr> +<a name="LOG10"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LN" accesskey="n" rel="next">LN</a>, Previous: <a href="usermanual.html#EXP" accesskey="p" rel="prev">EXP</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="log10"></a> +<h4 class="unnumberedsubsec">log10</h4> +<a name="index-log10"></a> + +<div class="example"> +<pre class="example">LOG10 num +</pre></div> + +<p>outputs the common logarithm of the input. +</p> +<hr> +<a name="LN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SIN" accesskey="n" rel="next">SIN</a>, Previous: <a href="usermanual.html#LOG10" accesskey="p" rel="prev">LOG10</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="ln"></a> +<h4 class="unnumberedsubsec">ln</h4> +<a name="index-ln"></a> + +<div class="example"> +<pre class="example">LN num +</pre></div> + +<p>outputs the natural logarithm of the input. +</p> +<hr> +<a name="SIN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RADSIN" accesskey="n" rel="next">RADSIN</a>, Previous: <a href="usermanual.html#LN" accesskey="p" rel="prev">LN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="sin"></a> +<h4 class="unnumberedsubsec">sin</h4> +<a name="index-sin"></a> + +<div class="example"> +<pre class="example">SIN degrees +</pre></div> + +<p>outputs the sine of its input, which is taken in degrees. +</p> +<hr> +<a name="RADSIN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#COS" accesskey="n" rel="next">COS</a>, Previous: <a href="usermanual.html#SIN" accesskey="p" rel="prev">SIN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="radsin"></a> +<h4 class="unnumberedsubsec">radsin</h4> +<a name="index-radsin"></a> + +<div class="example"> +<pre class="example">RADSIN radians +</pre></div> + +<p>outputs the sine of its input, which is taken in radians. +</p> +<hr> +<a name="COS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RADCOS" accesskey="n" rel="next">RADCOS</a>, Previous: <a href="usermanual.html#RADSIN" accesskey="p" rel="prev">RADSIN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="cos"></a> +<h4 class="unnumberedsubsec">cos</h4> +<a name="index-cos"></a> + +<div class="example"> +<pre class="example">COS degrees +</pre></div> + +<p>outputs the cosine of its input, which is taken in degrees. +</p> +<hr> +<a name="RADCOS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ARCTAN" accesskey="n" rel="next">ARCTAN</a>, Previous: <a href="usermanual.html#COS" accesskey="p" rel="prev">COS</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="radcos"></a> +<h4 class="unnumberedsubsec">radcos</h4> +<a name="index-radcos"></a> + +<div class="example"> +<pre class="example">RADCOS radians +</pre></div> + +<p>outputs the cosine of its input, which is taken in radians. +</p> +<hr> +<a name="ARCTAN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RADARCTAN" accesskey="n" rel="next">RADARCTAN</a>, Previous: <a href="usermanual.html#RADCOS" accesskey="p" rel="prev">RADCOS</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="arctan"></a> +<h4 class="unnumberedsubsec">arctan</h4> +<a name="index-arctan"></a> + +<div class="example"> +<pre class="example">ARCTAN num +(ARCTAN x y) +</pre></div> + +<p>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. +</p> +<hr> +<a name="RADARCTAN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ISEQ" accesskey="n" rel="next">ISEQ</a>, Previous: <a href="usermanual.html#ARCTAN" accesskey="p" rel="prev">ARCTAN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="radarctan"></a> +<h4 class="unnumberedsubsec">radarctan</h4> +<a name="index-radarctan"></a> + +<div class="example"> +<pre class="example">RADARCTAN num +(RADARCTAN x y) +</pre></div> + +<p>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. +</p> +<p>The expression <tt>2*(RADARCTAN 0 1)</tt><!-- /@w --> can be used to get the value of pi. +</p> +<hr> +<a name="ISEQ"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RSEQ" accesskey="n" rel="next">RSEQ</a>, Previous: <a href="usermanual.html#RADARCTAN" accesskey="p" rel="prev">RADARCTAN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="iseq"></a> +<h4 class="unnumberedsubsec">iseq</h4> +<a name="index-iseq"></a> + +<div class="example"> +<pre class="example">ISEQ from to (library procedure) +</pre></div> + +<p>outputs a list of the integers from <var>from</var> to <var>to</var>, inclusive. +</p> +<div class="example"> +<pre class="example">? show iseq 3 7 +[3 4 5 6 7] +? show iseq 7 3 +[7 6 5 4 3] +</pre></div> + +<hr> +<a name="RSEQ"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#ISEQ" accesskey="p" rel="prev">ISEQ</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="rseq"></a> +<h4 class="unnumberedsubsec">rseq</h4> +<a name="index-rseq"></a> + +<div class="example"> +<pre class="example">RSEQ from to count (library procedure) +</pre></div> + +<p>outputs a list of <var>count</var> equally spaced rational numbers between +<var>from</var> and <var>to</var>, inclusive. +</p> +<div class="example"> +<pre class="example">? 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] +</pre></div> + + +<hr> +<a name="NUMERIC-PREDICATES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="n" rel="next">RANDOM NUMBERS</a>, Previous: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="p" rel="prev">NUMERIC OPERATIONS</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Numeric-Predicates"></a> +<h3 class="section">5.2 Numeric Predicates</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#LESSP" accesskey="1">LESSP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GREATERP" accesskey="2">GREATERP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LESSEQUALP" accesskey="3">LESSEQUALP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GREATEREQUALP" accesskey="4">GREATEREQUALP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment"> + +</pre></th></tr></table> + + +<hr> +<a name="LESSP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GREATERP" accesskey="n" rel="next">GREATERP</a>, Previous: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="p" rel="prev">NUMERIC PREDICATES</a>, Up: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="u" rel="up">NUMERIC PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="lessp"></a> +<h4 class="unnumberedsubsec">lessp</h4> +<a name="index-lessp"></a> +<a name="index-less_003f"></a> +<a name="index-_003c"></a> + +<div class="example"> +<pre class="example">LESSP num1 num2 +LESS? num1 num2 +num1 < num2 +</pre></div> + +<p>outputs <code>TRUE</code> if its first input is strictly less than its second. +</p> +<hr> +<a name="GREATERP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LESSEQUALP" accesskey="n" rel="next">LESSEQUALP</a>, Previous: <a href="usermanual.html#LESSP" accesskey="p" rel="prev">LESSP</a>, Up: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="u" rel="up">NUMERIC PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="greaterp"></a> +<h4 class="unnumberedsubsec">greaterp</h4> +<a name="index-greaterp"></a> +<a name="index-greater_003f"></a> +<a name="index-_003e"></a> + +<div class="example"> +<pre class="example">GREATERP num1 num2 +GREATER? num1 num2 +num1 > num2 +</pre></div> + +<p>outputs <code>TRUE</code> if its first input is strictly greater than its second. +</p> +<hr> +<a name="LESSEQUALP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GREATEREQUALP" accesskey="n" rel="next">GREATEREQUALP</a>, Previous: <a href="usermanual.html#GREATERP" accesskey="p" rel="prev">GREATERP</a>, Up: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="u" rel="up">NUMERIC PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="lessequalp"></a> +<h4 class="unnumberedsubsec">lessequalp</h4> +<a name="index-lessequalp"></a> +<a name="index-lessequal_003f"></a> +<a name="index-_003c_003d"></a> + +<div class="example"> +<pre class="example">LESSEQUALP num1 num2 +LESSEQUAL? num1 num2 +num1 <= num2 +</pre></div> + +<p>outputs <code>TRUE</code> if its first input is less than or equal to its second. +</p> +<hr> +<a name="GREATEREQUALP"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#LESSEQUALP" accesskey="p" rel="prev">LESSEQUALP</a>, Up: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="u" rel="up">NUMERIC PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="greaterequalp"></a> +<h4 class="unnumberedsubsec">greaterequalp</h4> +<a name="index-greaterequalp"></a> +<a name="index-greaterequal_003f"></a> +<a name="index-_003e_003d"></a> + +<div class="example"> +<pre class="example">GREATEREQUALP num1 num2 +GREATEREQUAL? num1 num2 +num1 >= num2 +</pre></div> + +<p>outputs <code>TRUE</code> if its first input is greater than or equal to its second. +</p> + +<hr> +<a name="RANDOM-NUMBERS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PRINT-FORMATTING" accesskey="n" rel="next">PRINT FORMATTING</a>, Previous: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="p" rel="prev">NUMERIC PREDICATES</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Random-Numbers"></a> +<h3 class="section">5.3 Random Numbers</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#RANDOM" accesskey="1">RANDOM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RERANDOM" accesskey="2">RERANDOM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="RANDOM"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RERANDOM" accesskey="n" rel="next">RERANDOM</a>, Previous: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="p" rel="prev">RANDOM NUMBERS</a>, Up: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="u" rel="up">RANDOM NUMBERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="random"></a> +<h4 class="unnumberedsubsec">random</h4> +<a name="index-random"></a> + +<div class="example"> +<pre class="example">RANDOM num +(RANDOM start end) +</pre></div> + +<p>with one input, outputs a random nonnegative integer less than its +input, which must be a positive integer. +</p> +<p>With two inputs, <code>RANDOM</code> 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. <tt>(RANDOM 0 9)</tt><!-- /@w --> is equivalent to <tt>RANDOM 10</tt><!-- /@w -->; +<tt>(RANDOM 3 8)</tt><!-- /@w --> is equivalent to <tt>(RANDOM 6)+3</tt><!-- /@w -->. +</p> +<hr> +<a name="RERANDOM"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#RANDOM" accesskey="p" rel="prev">RANDOM</a>, Up: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="u" rel="up">RANDOM NUMBERS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="rerandom"></a> +<h4 class="unnumberedsubsec">rerandom</h4> +<a name="index-rerandom"></a> + +<div class="example"> +<pre class="example">RERANDOM +(RERANDOM seed) +</pre></div> + +<p>command. Makes the results of <code>RANDOM</code> reproducible. Ordinarily the +sequence of random numbers is different each time Logo is used. If you need +the same sequence of pseudo-random numbers repeatedly, e.g. to debug a +program, say <code>RERANDOM</code> before the first invocation of <code>RANDOM</code>. If +you need more than one repeatable sequence, you can give <code>RERANDOM</code> an integer +input; each possible input selects a unique sequence of numbers. +</p> + +<hr> +<a name="PRINT-FORMATTING"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="n" rel="next">BITWISE OPERATIONS</a>, Previous: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="p" rel="prev">RANDOM NUMBERS</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Print-Formatting"></a> +<h3 class="section">5.4 Print Formatting</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#FORM" accesskey="1">FORM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="FORM"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#PRINT-FORMATTING" accesskey="p" rel="prev">PRINT FORMATTING</a>, Up: <a href="usermanual.html#PRINT-FORMATTING" accesskey="u" rel="up">PRINT FORMATTING</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="form"></a> +<h4 class="unnumberedsubsec">form</h4> +<a name="index-form"></a> + +<div class="example"> +<pre class="example">FORM num width precision +</pre></div> + +<p>outputs a word containing a printable representation of <var>num</var>, possibly +preceded by spaces (and therefore not a number for purposes of +performing arithmetic operations), with at least <var>width</var> characters, +including exactly <var>precision</var> digits after the decimal point. (If +<var>precision</var> is 0 then there will be no decimal point in the output.) +</p> +<p>As a debugging feature, (<tt>FORM num <span class="nolinebreak">-1</span> format</tt><!-- /@w -->) will print the floating +point <var>num</var> according to the C printf <var>format</var>, to allow +</p> +<div class="example"> +<pre class="example">to hex :num +op form :num -1 "|%08X %08X| +end +</pre></div> + +<p>to allow finding out the exact result of floating point operations. The +precise format needed may be machine-dependent. +</p> + +<hr> +<a name="BITWISE-OPERATIONS"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#PRINT-FORMATTING" accesskey="p" rel="prev">PRINT FORMATTING</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Bitwise-Operations"></a> +<h3 class="section">5.5 Bitwise Operations</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#BITAND" accesskey="1">BITAND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BITOR" accesskey="2">BITOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BITXOR" accesskey="3">BITXOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BITNOT" accesskey="4">BITNOT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ASHIFT" accesskey="5">ASHIFT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LSHIFT" accesskey="6">LSHIFT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="BITAND"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BITOR" accesskey="n" rel="next">BITOR</a>, Previous: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="p" rel="prev">BITWISE OPERATIONS</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="bitand"></a> +<h4 class="unnumberedsubsec">bitand</h4> +<a name="index-bitand"></a> + +<div class="example"> +<pre class="example">BITAND num1 num2 +(BITAND num1 num2 num3 ...) +</pre></div> + +<p>outputs the bitwise <var>and</var> of its inputs, which must be integers. +</p> +<p>See <a href="usermanual.html#AND">AND</a> . +</p> +<hr> +<a name="BITOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BITXOR" accesskey="n" rel="next">BITXOR</a>, Previous: <a href="usermanual.html#BITAND" accesskey="p" rel="prev">BITAND</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="bitor"></a> +<h4 class="unnumberedsubsec">bitor</h4> +<a name="index-bitor"></a> + +<div class="example"> +<pre class="example">BITOR num1 num2 +(BITOR num1 num2 num3 ...) +</pre></div> + +<p>outputs the bitwise <var>or</var> of its inputs, which must be integers. +</p> +<p>See <a href="usermanual.html#OR">OR</a> . +</p> +<hr> +<a name="BITXOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BITNOT" accesskey="n" rel="next">BITNOT</a>, Previous: <a href="usermanual.html#BITOR" accesskey="p" rel="prev">BITOR</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="bitxor"></a> +<h4 class="unnumberedsubsec">bitxor</h4> +<a name="index-bitxor"></a> + +<div class="example"> +<pre class="example">BITXOR num1 num2 +(BITXOR num1 num2 num3 ...) +</pre></div> + +<p>outputs the bitwise <var>exclusive or</var> of its inputs, which must be integers. +</p> +<hr> +<a name="BITNOT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ASHIFT" accesskey="n" rel="next">ASHIFT</a>, Previous: <a href="usermanual.html#BITXOR" accesskey="p" rel="prev">BITXOR</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="bitnot"></a> +<h4 class="unnumberedsubsec">bitnot</h4> +<a name="index-bitnot"></a> + +<div class="example"> +<pre class="example">BITNOT num +</pre></div> + +<p>outputs the bitwise <var>not</var> of its input, which must be an integer. +</p> +<p>See <a href="usermanual.html#NOT">NOT</a> . +</p> +<hr> +<a name="ASHIFT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LSHIFT" accesskey="n" rel="next">LSHIFT</a>, Previous: <a href="usermanual.html#BITNOT" accesskey="p" rel="prev">BITNOT</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="ashift"></a> +<h4 class="unnumberedsubsec">ashift</h4> +<a name="index-ashift"></a> + +<div class="example"> +<pre class="example">ASHIFT num1 num2 +</pre></div> + +<p>outputs <var>num1</var> arithmetic-shifted to the left by <var>num2</var> bits. If +<var>num2</var> is negative, the shift is to the right with sign extension. The +inputs must be integers. +</p> +<hr> +<a name="LSHIFT"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#ASHIFT" accesskey="p" rel="prev">ASHIFT</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="lshift"></a> +<h4 class="unnumberedsubsec">lshift</h4> +<a name="index-lshift"></a> + +<div class="example"> +<pre class="example">LSHIFT num1 num2 +</pre></div> + +<p>outputs <var>num1</var> logical-shifted to the left by <var>num2</var> bits. If +<var>num2</var> is negative, the shift is to the right with zero fill. The inputs +must be integers. +</p> + + +<hr> +<a name="LOGICAL-OPERATIONS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GRAPHICS" accesskey="n" rel="next">GRAPHICS</a>, Previous: <a href="usermanual.html#ARITHMETIC" accesskey="p" rel="prev">ARITHMETIC</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Logical-Operations"></a> +<h2 class="chapter">6 Logical Operations</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#AND" accesskey="1">AND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OR" accesskey="2">OR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NOT" accesskey="3">NOT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="AND"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OR" accesskey="n" rel="next">OR</a>, Previous: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="p" rel="prev">LOGICAL OPERATIONS</a>, Up: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="u" rel="up">LOGICAL OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="and"></a> +<h3 class="unnumberedsec">and</h3> +<a name="index-and"></a> + +<div class="example"> +<pre class="example">AND tf1 tf2 +(AND tf1 tf2 tf3 ...) +</pre></div> + +<p>outputs <code>TRUE</code> if all inputs are <code>TRUE</code>, otherwise <code>FALSE</code>. All inputs +must be <code>TRUE</code> or <code>FALSE</code>. (Comparison is case-insensitive regardless +of the value of <code>CASEIGNOREDP</code>. That is, <code>true</code> or <code>True</code> or <code>TRUE</code> +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 <code>TRUE</code> +or <code>FALSE</code> value. List expressions are evaluated from left to right; +as soon as a <code>FALSE</code> value is found, the remaining inputs are not +examined. Example: +</p> +<div class="example"> +<pre class="example">MAKE "RESULT AND [NOT (:X = 0)] [(1 / :X) > .5] +</pre></div> + +<p>to avoid the division by zero if the first part is false. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#OR" accesskey="1">OR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NOT" accesskey="2">NOT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="OR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NOT" accesskey="n" rel="next">NOT</a>, Previous: <a href="usermanual.html#AND" accesskey="p" rel="prev">AND</a>, Up: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="u" rel="up">LOGICAL OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="or"></a> +<h4 class="unnumberedsubsec">or</h4> +<a name="index-or"></a> + +<div class="example"> +<pre class="example">OR tf1 tf2 +(OR tf1 tf2 tf3 ...) +</pre></div> + +<p>outputs <code>TRUE</code> if any input is <code>TRUE</code>, otherwise <code>FALSE</code>. All inputs +must be <code>TRUE</code> or <code>FALSE</code>. (Comparison is case-insensitive regardless +of the value of <code>CASEIGNOREDP</code>. That is, <code>true</code> or <code>True</code> or <code>TRUE</code> +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 <code>TRUE</code> +or <code>FALSE</code> value. List expressions are evaluated from left to right; +as soon as a <code>TRUE</code> value is found, the remaining inputs are not +examined. Example: +</p> +<div class="example"> +<pre class="example">IF OR :X=0 [some.long.computation] [...] +</pre></div> + +<p>to avoid the long computation if the first condition is met. +</p> +<hr> +<a name="NOT"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#OR" accesskey="p" rel="prev">OR</a>, Up: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="u" rel="up">LOGICAL OPERATIONS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="not"></a> +<h4 class="unnumberedsubsec">not</h4> +<a name="index-not"></a> + +<div class="example"> +<pre class="example">NOT tf +</pre></div> + +<p>outputs <code>TRUE</code> if the input is <code>FALSE</code>, 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 <code>TRUE</code> or <code>FALSE</code> value. +</p> + +<hr> +<a name="GRAPHICS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="n" rel="next">WORKSPACE MANAGEMENT</a>, Previous: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="p" rel="prev">LOGICAL OPERATIONS</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Graphics"></a> +<h2 class="chapter">7 Graphics</h2> + +<p>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. Nevertheless, 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. +</p> +<p>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 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). +</p> +<p>Colors are, of course, hardware-dependent. However, Logo provides partial +hardware independence by interpreting color numbers 0 through 7 uniformly +on all computers: +</p> +<div class="example"> +<pre class="example">0 black 1 blue 2 green 3 cyan +4 red 5 magenta 6 yellow 7 white +</pre></div> + +<p>Where possible, Logo provides additional user-settable colors; how many +are available depends 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: +</p> +<div class="example"> +<pre class="example"> 8 brown 9 tan 10 forest 11 aqua +12 salmon 13 purple 14 orange 15 grey +</pre></div> + +<p>Logo begins with a black background and white pen. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#TURTLE-MOTION" accesskey="1">TURTLE MOTION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="2">TURTLE MOTION QUERIES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="3">TURTLE AND WINDOW CONTROL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="4">TURTLE AND WINDOW QUERIES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="5">PEN AND BACKGROUND CONTROL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PEN-QUERIES" accesskey="6">PEN QUERIES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="7">SAVING AND LOADING PICTURES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MOUSE-QUERIES" accesskey="8">MOUSE QUERIES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + + +<hr> +<a name="TURTLE-MOTION"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="n" rel="next">TURTLE MOTION QUERIES</a>, Previous: <a href="usermanual.html#GRAPHICS" accesskey="p" rel="prev">GRAPHICS</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Turtle-Motion"></a> +<h3 class="section">7.1 Turtle Motion</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#FORWARD" accesskey="1">FORWARD</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BACK" accesskey="2">BACK</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LEFT" accesskey="3">LEFT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RIGHT" accesskey="4">RIGHT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETPOS" accesskey="5">SETPOS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETXY" accesskey="6">SETXY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETX" accesskey="7">SETX</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETY" accesskey="8">SETY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETHEADING" accesskey="9">SETHEADING</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#HOME">HOME</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ARC">ARC</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="FORWARD"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BACK" accesskey="n" rel="next">BACK</a>, Previous: <a href="usermanual.html#TURTLE-MOTION" accesskey="p" rel="prev">TURTLE MOTION</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="forward"></a> +<h4 class="unnumberedsubsec">forward</h4> +<a name="index-forward"></a> +<a name="index-fd"></a> + +<div class="example"> +<pre class="example">FORWARD dist +FD dist +</pre></div> + +<p>moves the turtle forward, in the direction that it’s facing, by the +specified distance (measured in turtle steps). +</p> +<hr> +<a name="BACK"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LEFT" accesskey="n" rel="next">LEFT</a>, Previous: <a href="usermanual.html#FORWARD" accesskey="p" rel="prev">FORWARD</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="back"></a> +<h4 class="unnumberedsubsec">back</h4> +<a name="index-back"></a> +<a name="index-bk"></a> + +<div class="example"> +<pre class="example">BACK dist +BK dist +</pre></div> + +<p>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.) +</p> +<hr> +<a name="LEFT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RIGHT" accesskey="n" rel="next">RIGHT</a>, Previous: <a href="usermanual.html#BACK" accesskey="p" rel="prev">BACK</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="left"></a> +<h4 class="unnumberedsubsec">left</h4> +<a name="index-left"></a> +<a name="index-lt"></a> + +<div class="example"> +<pre class="example">LEFT degrees +LT degrees +</pre></div> + +<p>turns the turtle counterclockwise by the specified angle, measured in +degrees (1/360 of a circle). +</p> +<hr> +<a name="RIGHT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETPOS" accesskey="n" rel="next">SETPOS</a>, Previous: <a href="usermanual.html#LEFT" accesskey="p" rel="prev">LEFT</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="right"></a> +<h4 class="unnumberedsubsec">right</h4> +<a name="index-right"></a> +<a name="index-rt"></a> + +<div class="example"> +<pre class="example">RIGHT degrees +RT degrees +</pre></div> + +<p>turns the turtle clockwise by the specified angle, measured in degrees +(1/360 of a circle). +</p> +<hr> +<a name="SETPOS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETXY" accesskey="n" rel="next">SETXY</a>, Previous: <a href="usermanual.html#RIGHT" accesskey="p" rel="prev">RIGHT</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setpos"></a> +<h4 class="unnumberedsubsec">setpos</h4> +<a name="index-setpos"></a> + +<div class="example"> +<pre class="example">SETPOS pos +</pre></div> + +<p>moves the turtle to an absolute position in the graphics window. The input is +a list of two numbers, the X and Y coordinates. +</p> +<hr> +<a name="SETXY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETX" accesskey="n" rel="next">SETX</a>, Previous: <a href="usermanual.html#SETPOS" accesskey="p" rel="prev">SETPOS</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setxy"></a> +<h4 class="unnumberedsubsec">setxy</h4> +<a name="index-setxy"></a> + +<div class="example"> +<pre class="example">SETXY xcor ycor +</pre></div> + +<p>moves the turtle to an absolute position in the graphics window. The two +inputs are numbers, the X and Y coordinates. +</p> +<hr> +<a name="SETX"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETY" accesskey="n" rel="next">SETY</a>, Previous: <a href="usermanual.html#SETXY" accesskey="p" rel="prev">SETXY</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setx"></a> +<h4 class="unnumberedsubsec">setx</h4> +<a name="index-setx"></a> + +<div class="example"> +<pre class="example">SETX xcor +</pre></div> + +<p>moves the turtle horizontally from its old position to a new absolute +horizontal coordinate. The input is the new X coordinate. +</p> +<hr> +<a name="SETY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETHEADING" accesskey="n" rel="next">SETHEADING</a>, Previous: <a href="usermanual.html#SETX" accesskey="p" rel="prev">SETX</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="sety"></a> +<h4 class="unnumberedsubsec">sety</h4> +<a name="index-sety"></a> + +<div class="example"> +<pre class="example">SETY ycor +</pre></div> + +<p>moves the turtle vertically from its old position to a new absolute +vertical coordinate. The input is the new Y coordinate. +</p> +<hr> +<a name="SETHEADING"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#HOME" accesskey="n" rel="next">HOME</a>, Previous: <a href="usermanual.html#SETY" accesskey="p" rel="prev">SETY</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setheading"></a> +<h4 class="unnumberedsubsec">setheading</h4> +<a name="index-setheading"></a> +<a name="index-seth"></a> + +<div class="example"> +<pre class="example">SETHEADING degrees +SETH degrees +</pre></div> + +<p>turns the turtle to a new absolute heading. The input is a number, +the heading in degrees clockwise from the positive Y axis. +</p> +<hr> +<a name="HOME"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ARC" accesskey="n" rel="next">ARC</a>, Previous: <a href="usermanual.html#SETHEADING" accesskey="p" rel="prev">SETHEADING</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="home"></a> +<h4 class="unnumberedsubsec">home</h4> +<a name="index-home"></a> + +<div class="example"> +<pre class="example">HOME +</pre></div> + +<p>moves the turtle to the center of the screen. Equivalent to +<tt>SETPOS [0 0] SETHEADING 0.</tt><!-- /@w --> +</p> +<p>See <a href="usermanual.html#SETPOS">SETPOS</a> , +See <a href="usermanual.html#SETHEADING">SETHEADING</a> . +</p> +<hr> +<a name="ARC"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#HOME" accesskey="p" rel="prev">HOME</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="arc"></a> +<h4 class="unnumberedsubsec">arc</h4> +<a name="index-arc"></a> + +<div class="example"> +<pre class="example">ARC angle radius +</pre></div> + +<p>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. +</p> + +<hr> +<a name="TURTLE-MOTION-QUERIES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="n" rel="next">TURTLE AND WINDOW CONTROL</a>, Previous: <a href="usermanual.html#TURTLE-MOTION" accesskey="p" rel="prev">TURTLE MOTION</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Turtle-Motion-Queries"></a> +<h3 class="section">7.2 Turtle Motion Queries</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#POS" accesskey="1">POS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#XCOR" accesskey="2">XCOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#YCOR" accesskey="3">YCOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#HEADING" accesskey="4">HEADING</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TOWARDS" accesskey="5">TOWARDS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SCRUNCH" accesskey="6">SCRUNCH</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="POS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#XCOR" accesskey="n" rel="next">XCOR</a>, Previous: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="p" rel="prev">TURTLE MOTION QUERIES</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pos"></a> +<h4 class="unnumberedsubsec">pos</h4> +<a name="index-pos"></a> + +<div class="example"> +<pre class="example">POS +</pre></div> + +<p>outputs the turtle’s current position, as a list of two numbers, the X +and Y coordinates. +</p> +<hr> +<a name="XCOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#YCOR" accesskey="n" rel="next">YCOR</a>, Previous: <a href="usermanual.html#POS" accesskey="p" rel="prev">POS</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="xcor"></a> +<h4 class="unnumberedsubsec">xcor</h4> +<a name="index-xcor"></a> + +<div class="example"> +<pre class="example">XCOR (library procedure) +</pre></div> + +<p>outputs a number, the turtle’s X coordinate. +</p> +<hr> +<a name="YCOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#HEADING" accesskey="n" rel="next">HEADING</a>, Previous: <a href="usermanual.html#XCOR" accesskey="p" rel="prev">XCOR</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="ycor"></a> +<h4 class="unnumberedsubsec">ycor</h4> +<a name="index-ycor"></a> + +<div class="example"> +<pre class="example">YCOR (library procedure) +</pre></div> + +<p>outputs a number, the turtle’s Y coordinate. +</p> +<hr> +<a name="HEADING"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TOWARDS" accesskey="n" rel="next">TOWARDS</a>, Previous: <a href="usermanual.html#YCOR" accesskey="p" rel="prev">YCOR</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="heading"></a> +<h4 class="unnumberedsubsec">heading</h4> +<a name="index-heading"></a> + +<div class="example"> +<pre class="example">HEADING +</pre></div> + +<p>outputs a number, the turtle’s heading in degrees. +</p> +<hr> +<a name="TOWARDS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SCRUNCH" accesskey="n" rel="next">SCRUNCH</a>, Previous: <a href="usermanual.html#HEADING" accesskey="p" rel="prev">HEADING</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="towards"></a> +<h4 class="unnumberedsubsec">towards</h4> +<a name="index-towards"></a> + +<div class="example"> +<pre class="example">TOWARDS pos +</pre></div> + +<p>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. +</p> +<hr> +<a name="SCRUNCH"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#TOWARDS" accesskey="p" rel="prev">TOWARDS</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="scrunch"></a> +<h4 class="unnumberedsubsec">scrunch</h4> +<a name="index-scrunch"></a> + +<div class="example"> +<pre class="example">SCRUNCH +</pre></div> + +<p>outputs a list containing two numbers, the X and Y scrunch factors, as used by +<code>SETSCRUNCH</code>. (But note that <code>SETSCRUNCH</code> takes two numbers as inputs, not one +list of numbers.) +</p> +<p>See <a href="usermanual.html#SETSCRUNCH">SETSCRUNCH</a> . +</p> + + +<hr> +<a name="TURTLE-AND-WINDOW-CONTROL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="n" rel="next">TURTLE AND WINDOW QUERIES</a>, Previous: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="p" rel="prev">TURTLE MOTION QUERIES</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Turtle-and-Window-Control"></a> +<h3 class="section">7.3 Turtle and Window Control</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#SHOWTURTLE" accesskey="1">SHOWTURTLE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#HIDETURTLE" accesskey="2">HIDETURTLE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CLEAN" accesskey="3">CLEAN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CLEARSCREEN" accesskey="4">CLEARSCREEN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WRAP" accesskey="5">WRAP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WINDOW" accesskey="6">WINDOW</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FENCE" accesskey="7">FENCE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FILL" accesskey="8">FILL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FILLED" accesskey="9">FILLED</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LABEL">LABEL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETLABELHEIGHT">SETLABELHEIGHT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TEXTSCREEN">TEXTSCREEN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FULLSCREEN">FULLSCREEN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SPLITSCREEN">SPLITSCREEN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETSCRUNCH">SETSCRUNCH</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REFRESH">REFRESH</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NOREFRESH">NOREFRESH</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="SHOWTURTLE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#HIDETURTLE" accesskey="n" rel="next">HIDETURTLE</a>, Previous: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="p" rel="prev">TURTLE AND WINDOW CONTROL</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="showturtle"></a> +<h4 class="unnumberedsubsec">showturtle</h4> +<a name="index-showturtle"></a> +<a name="index-st"></a> + +<div class="example"> +<pre class="example">SHOWTURTLE +ST +</pre></div> + +<p>makes the turtle visible. +</p> +<hr> +<a name="HIDETURTLE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CLEAN" accesskey="n" rel="next">CLEAN</a>, Previous: <a href="usermanual.html#SHOWTURTLE" accesskey="p" rel="prev">SHOWTURTLE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="hideturtle"></a> +<h4 class="unnumberedsubsec">hideturtle</h4> +<a name="index-hideturtle"></a> +<a name="index-ht"></a> + +<div class="example"> +<pre class="example">HIDETURTLE +HT +</pre></div> + +<p>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. +</p> +<hr> +<a name="CLEAN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CLEARSCREEN" accesskey="n" rel="next">CLEARSCREEN</a>, Previous: <a href="usermanual.html#HIDETURTLE" accesskey="p" rel="prev">HIDETURTLE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="clean"></a> +<h4 class="unnumberedsubsec">clean</h4> +<a name="index-clean"></a> + +<div class="example"> +<pre class="example">CLEAN +</pre></div> + +<p>erases all lines that the turtle has drawn on the graphics window. The +turtle’s state (position, heading, pen mode, etc.) is not changed. +</p> +<hr> +<a name="CLEARSCREEN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WRAP" accesskey="n" rel="next">WRAP</a>, Previous: <a href="usermanual.html#CLEAN" accesskey="p" rel="prev">CLEAN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="clearscreen"></a> +<h4 class="unnumberedsubsec">clearscreen</h4> +<a name="index-clearscreen"></a> +<a name="index-cs"></a> + +<div class="example"> +<pre class="example">CLEARSCREEN +CS +</pre></div> + +<p>erases the graphics window and sends the turtle to its initial position +and heading. Like <code>HOME</code> and <code>CLEAN</code> together. +</p> +<p>See <a href="usermanual.html#HOME">HOME</a> . +</p> +<hr> +<a name="WRAP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WINDOW" accesskey="n" rel="next">WINDOW</a>, Previous: <a href="usermanual.html#CLEARSCREEN" accesskey="p" rel="prev">CLEARSCREEN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="wrap"></a> +<h4 class="unnumberedsubsec">wrap</h4> +<a name="index-wrap"></a> + +<div class="example"> +<pre class="example">WRAP +</pre></div> + +<p>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 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 <code>WINDOW</code> and <code>FENCE</code>. +</p> +<p>See <a href="usermanual.html#FENCE">FENCE</a> . +</p> +<hr> +<a name="WINDOW"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FENCE" accesskey="n" rel="next">FENCE</a>, Previous: <a href="usermanual.html#WRAP" accesskey="p" rel="prev">WRAP</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="window"></a> +<h4 class="unnumberedsubsec">window</h4> +<a name="index-window"></a> + +<div class="example"> +<pre class="example">WINDOW +</pre></div> + +<p>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, <code>HOME</code> will bring it back to the center of the +window.) Compare <code>WRAP</code> and <code>FENCE</code>. +</p> + +<hr> +<a name="FENCE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FILL" accesskey="n" rel="next">FILL</a>, Previous: <a href="usermanual.html#WINDOW" accesskey="p" rel="prev">WINDOW</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="fence"></a> +<h4 class="unnumberedsubsec">fence</h4> +<a name="index-fence"></a> + +<div class="example"> +<pre class="example">FENCE +</pre></div> + +<p>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 <code>WRAP</code> and <code>WINDOW</code>. +</p> +<p>See <a href="usermanual.html#WRAP">WRAP</a> . +</p> +<hr> +<a name="FILL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FILLED" accesskey="n" rel="next">FILLED</a>, Previous: <a href="usermanual.html#FENCE" accesskey="p" rel="prev">FENCE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="fill"></a> +<h4 class="unnumberedsubsec">fill</h4> +<a name="index-fill"></a> + +<div class="example"> +<pre class="example">FILL +</pre></div> + +<p>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. +</p> +<hr> +<a name="FILLED"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LABEL" accesskey="n" rel="next">LABEL</a>, Previous: <a href="usermanual.html#FILL" accesskey="p" rel="prev">FILL</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="filled"></a> +<h4 class="unnumberedsubsec">filled</h4> +<a name="index-filled"></a> + +<div class="example"> +<pre class="example">FILLED color instructions +</pre></div> + +<p>runs the instructions, remembering all points visited by turtle +motion commands, starting <em>and ending</em> with the turtle’s initial +position. Then draws (ignoring penmode) the resulting polygon, +in the current pen 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) +</p> +<hr> +<a name="LABEL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETLABELHEIGHT" accesskey="n" rel="next">SETLABELHEIGHT</a>, Previous: <a href="usermanual.html#FILLED" accesskey="p" rel="prev">FILLED</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="label"></a> +<h4 class="unnumberedsubsec">label</h4> +<a name="index-label"></a> + +<div class="example"> +<pre class="example">LABEL text +</pre></div> + +<p>takes a word or list as input, and prints the input on the graphics +window, starting at the turtle’s position. +</p> +<hr> +<a name="SETLABELHEIGHT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TEXTSCREEN" accesskey="n" rel="next">TEXTSCREEN</a>, Previous: <a href="usermanual.html#LABEL" accesskey="p" rel="prev">LABEL</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setlabelheight"></a> +<h4 class="unnumberedsubsec">setlabelheight</h4> +<a name="index-setlabelheight"></a> + +<div class="example"> +<pre class="example">SETLABELHEIGHT height +</pre></div> + +<p>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 <code>SETSCRUNCH</code> has been used. Also, note +that <code>SETSCRUNCH</code> changes the font size to try to preserve this height +in turtle steps. Note that the query operation corresponding to this +command is <code>LABELSIZE</code>, not <code>LABELHEIGHT</code>, because it tells you the width +as well as the height of characters in the current font. +</p> +<hr> +<a name="TEXTSCREEN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FULLSCREEN" accesskey="n" rel="next">FULLSCREEN</a>, Previous: <a href="usermanual.html#SETLABELHEIGHT" accesskey="p" rel="prev">SETLABELHEIGHT</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="textscreen"></a> +<h4 class="unnumberedsubsec">textscreen</h4> +<a name="index-textscreen"></a> + +<div class="example"> +<pre class="example">TEXTSCREEN +TS +</pre></div> + +<p>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 <code>SPLITSCREEN</code> and +<code>FULLSCREEN</code>. +</p> +<p>See <a href="usermanual.html#SPLITSCREEN">SPLITSCREEN</a> . +</p> +<hr> +<a name="FULLSCREEN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SPLITSCREEN" accesskey="n" rel="next">SPLITSCREEN</a>, Previous: <a href="usermanual.html#TEXTSCREEN" accesskey="p" rel="prev">TEXTSCREEN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="fullscreen"></a> +<h4 class="unnumberedsubsec">fullscreen</h4> +<a name="index-fullscreen"></a> +<a name="index-fs"></a> + +<div class="example"> +<pre class="example">FULLSCREEN +FS +</pre></div> + +<p>rearranges the size and position of windows to maximize the space +available in the graphics window. The details differ among machines. +Compare <code>SPLITSCREEN</code> and <code>TEXTSCREEN</code>. +</p> +<p>Since there must be a text window to allow printing (including the printing of +the Logo prompt), Logo automatically switches from fullscreen to splitscreen +whenever anything is printed. +</p> +<p>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.] +</p> +<hr> +<a name="SPLITSCREEN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETSCRUNCH" accesskey="n" rel="next">SETSCRUNCH</a>, Previous: <a href="usermanual.html#FULLSCREEN" accesskey="p" rel="prev">FULLSCREEN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="splitscreen"></a> +<h4 class="unnumberedsubsec">splitscreen</h4> +<a name="index-splitscreen"></a> +<a name="index-ss"></a> + +<div class="example"> +<pre class="example">SPLITSCREEN +SS +</pre></div> + +<p>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 <code>TEXTSCREEN</code> and <code>FULLSCREEN</code>. +</p> +<p>See <a href="usermanual.html#TEXTSCREEN">TEXTSCREEN</a> . +</p> +<hr> +<a name="SETSCRUNCH"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REFRESH" accesskey="n" rel="next">REFRESH</a>, Previous: <a href="usermanual.html#SPLITSCREEN" accesskey="p" rel="prev">SPLITSCREEN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setscrunch"></a> +<h4 class="unnumberedsubsec">setscrunch</h4> +<a name="index-setscrunch"></a> +<a name="index-scrunch_002edat"></a> + +<div class="example"> +<pre class="example">SETSCRUNCH xscale yscale +</pre></div> + +<p>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 +<tt>SETSCRUNCH 2 1</tt><!-- /@w --> 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.) +</p> +<p>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 <code>SETSCRUNCH</code> are remembered in a file (called +<samp>scrunch.dat</samp>) and are automatically put into effect when a Logo session +begins. +</p> +<hr> +<a name="REFRESH"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NOREFRESH" accesskey="n" rel="next">NOREFRESH</a>, Previous: <a href="usermanual.html#SETSCRUNCH" accesskey="p" rel="prev">SETSCRUNCH</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="refresh"></a> +<h4 class="unnumberedsubsec">refresh</h4> +<a name="index-refresh"></a> + +<div class="example"> +<pre class="example">REFRESH +</pre></div> + +<p>(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. +</p> +<hr> +<a name="NOREFRESH"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#REFRESH" accesskey="p" rel="prev">REFRESH</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="norefresh"></a> +<h4 class="unnumberedsubsec">norefresh</h4> +<a name="index-norefresh"></a> + +<div class="example"> +<pre class="example">NOREFRESH +</pre></div> + +<p>(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 NOREFRESH may +prevent Logo from restoring the graphics image after the window is +moved, resized, or overlayed. +</p> + +<hr> +<a name="TURTLE-AND-WINDOW-QUERIES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="n" rel="next">PEN AND BACKGROUND CONTROL</a>, Previous: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="p" rel="prev">TURTLE AND WINDOW CONTROL</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Turtle-and-Window-Queries"></a> +<h3 class="section">7.4 Turtle and Window Queries</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#SHOWNP" accesskey="1">SHOWNP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SCREENMODE" accesskey="2">SCREENMODE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TURTLEMODE" accesskey="3">TURTLEMODE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LABELSIZE" accesskey="4">LABELSIZE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="SHOWNP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SCREENMODE" accesskey="n" rel="next">SCREENMODE</a>, Previous: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="p" rel="prev">TURTLE AND WINDOW QUERIES</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="u" rel="up">TURTLE AND WINDOW QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="shownp"></a> +<h4 class="unnumberedsubsec">shownp</h4> +<a name="index-shownp"></a> +<a name="index-shown_003f"></a> + +<div class="example"> +<pre class="example">SHOWNP +SHOWN? +</pre></div> + +<p>outputs <code>TRUE</code> if the turtle is shown (visible), <code>FALSE</code> if the turtle is +hidden. See <code>SHOWTURTLE</code> and <code>HIDETURTLE</code>. +</p> +<p>See <a href="usermanual.html#SHOWTURTLE">SHOWTURTLE</a> , +<a href="usermanual.html#HIDETURTLE">HIDETURTLE</a> . +</p> + +<hr> +<a name="SCREENMODE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TURTLEMODE" accesskey="n" rel="next">TURTLEMODE</a>, Previous: <a href="usermanual.html#SHOWNP" accesskey="p" rel="prev">SHOWNP</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="u" rel="up">TURTLE AND WINDOW QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="screenmode"></a> +<h4 class="unnumberedsubsec">screenmode</h4> +<a name="index-screenmode"></a> + +<div class="example"> +<pre class="example">SCREENMODE +</pre></div> + +<p>outputs the word <code>TEXTSCREEN</code>, <code>SPLITSCREEN</code>, or <code>FULLSCREEN</code> depending +on the current screen mode. +</p> +<hr> +<a name="TURTLEMODE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LABELSIZE" accesskey="n" rel="next">LABELSIZE</a>, Previous: <a href="usermanual.html#SCREENMODE" accesskey="p" rel="prev">SCREENMODE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="u" rel="up">TURTLE AND WINDOW QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="turtlemode"></a> +<h4 class="unnumberedsubsec">turtlemode</h4> +<a name="index-turtlemode"></a> + +<div class="example"> +<pre class="example">TURTLEMODE +</pre></div> + +<p>outputs the word <code>WRAP</code>, <code>FENCE</code>, or <code>WINDOW</code> depending on the current +turtle mode. +</p> +<hr> +<a name="LABELSIZE"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#TURTLEMODE" accesskey="p" rel="prev">TURTLEMODE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="u" rel="up">TURTLE AND WINDOW QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="labelsize"></a> +<h4 class="unnumberedsubsec">labelsize</h4> +<a name="index-labelsize"></a> + +<div class="example"> +<pre class="example">LABELSIZE +</pre></div> + +<p>(wxWidgets only) outputs a list of two positive integers, the width +and height of characters displayed by <code>LABEL</code> measured in turtle steps +(which will be different from screen pixels if <code>SETSCRUNCH</code> has been +used). There is no <code>SETLABELSIZE</code> because the width and height of a +font are not separately controllable, so the inverse of this operation +is <code>SETLABELHEIGHT</code>, which takes just one number for the desired height. +</p> + + +<hr> +<a name="PEN-AND-BACKGROUND-CONTROL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PEN-QUERIES" accesskey="n" rel="next">PEN QUERIES</a>, Previous: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="p" rel="prev">TURTLE AND WINDOW QUERIES</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Pen-and-Background-Control"></a> +<h3 class="section">7.5 Pen and Background Control</h3> + +<p>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). +</p> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENDOWN" accesskey="1">PENDOWN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENUP" accesskey="2">PENUP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENPAINT" accesskey="3">PENPAINT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENERASE" accesskey="4">PENERASE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENREVERSE" accesskey="5">PENREVERSE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETPENCOLOR" accesskey="6">SETPENCOLOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETPALETTE" accesskey="7">SETPALETTE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETPENSIZE" accesskey="8">SETPENSIZE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETPENPATTERN" accesskey="9">SETPENPATTERN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETPEN">SETPEN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETBACKGROUND">SETBACKGROUND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="PENDOWN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PENUP" accesskey="n" rel="next">PENUP</a>, Previous: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="p" rel="prev">PEN AND BACKGROUND CONTROL</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pendown"></a> +<h4 class="unnumberedsubsec">pendown</h4> +<a name="index-pendown"></a> +<a name="index-pd"></a> + +<div class="example"> +<pre class="example">PENDOWN +PD +</pre></div> + +<p>sets the pen’s position to <code>DOWN</code>, without changing its mode. +</p> +<hr> +<a name="PENUP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PENPAINT" accesskey="n" rel="next">PENPAINT</a>, Previous: <a href="usermanual.html#PENDOWN" accesskey="p" rel="prev">PENDOWN</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="penup"></a> +<h4 class="unnumberedsubsec">penup</h4> +<a name="index-penup"></a> +<a name="index-pu"></a> + +<div class="example"> +<pre class="example">PENUP +PU +</pre></div> + +<p>sets the pen’s position to <code>UP</code>, without changing its mode. +</p> +<hr> +<a name="PENPAINT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PENERASE" accesskey="n" rel="next">PENERASE</a>, Previous: <a href="usermanual.html#PENUP" accesskey="p" rel="prev">PENUP</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="penpaint"></a> +<h4 class="unnumberedsubsec">penpaint</h4> +<a name="index-penpaint"></a> +<a name="index-ppt"></a> + +<div class="example"> +<pre class="example">PENPAINT +PPT +</pre></div> + +<p>sets the pen’s position to <code>DOWN</code> and mode to <code>PAINT</code>. +</p> +<hr> +<a name="PENERASE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PENREVERSE" accesskey="n" rel="next">PENREVERSE</a>, Previous: <a href="usermanual.html#PENPAINT" accesskey="p" rel="prev">PENPAINT</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="penerase"></a> +<h4 class="unnumberedsubsec">penerase</h4> +<a name="index-penerase"></a> +<a name="index-pe"></a> + +<div class="example"> +<pre class="example">PENERASE +PE +</pre></div> + +<p>sets the pen’s position to <code>DOWN</code> and mode to <code>ERASE</code>. +</p> +<hr> +<a name="PENREVERSE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETPENCOLOR" accesskey="n" rel="next">SETPENCOLOR</a>, Previous: <a href="usermanual.html#PENERASE" accesskey="p" rel="prev">PENERASE</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="penreverse"></a> +<h4 class="unnumberedsubsec">penreverse</h4> +<a name="index-penreverse"></a> +<a name="index-px"></a> + +<div class="example"> +<pre class="example">PENREVERSE +PX +</pre></div> + +<p>sets the pen’s position to <code>DOWN</code> and mode to <code>REVERSE</code>. (This may interact +in system-dependent ways with use of color.) +</p> +<hr> +<a name="SETPENCOLOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETPALETTE" accesskey="n" rel="next">SETPALETTE</a>, Previous: <a href="usermanual.html#PENREVERSE" accesskey="p" rel="prev">PENREVERSE</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setpencolor"></a> +<h4 class="unnumberedsubsec">setpencolor</h4> +<a name="index-setpencolor"></a> +<a name="index-setpc"></a> + +<div class="example"> +<pre class="example">SETPENCOLOR colornumber.or.rgblist +SETPC colornumber.or.rgblist +</pre></div> + +<p>sets the pen color to the given number, which must be a nonnegative +integer. There are initial assignments for the first 16 colors: +</p> +<div class="example"> +<pre class="example"> 0 black 1 blue 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 +</pre></div> + +<p>but other colors can be assigned to numbers by the <code>PALETTE</code> 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). +</p> +<hr> +<a name="SETPALETTE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETPENSIZE" accesskey="n" rel="next">SETPENSIZE</a>, Previous: <a href="usermanual.html#SETPENCOLOR" accesskey="p" rel="prev">SETPENCOLOR</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setpalette"></a> +<h4 class="unnumberedsubsec">setpalette</h4> +<a name="index-setpalette"></a> + +<div class="example"> +<pre class="example">SETPALETTE colornumber rgblist +</pre></div> + +<p>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. +</p> +<hr> +<a name="SETPENSIZE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETPENPATTERN" accesskey="n" rel="next">SETPENPATTERN</a>, Previous: <a href="usermanual.html#SETPALETTE" accesskey="p" rel="prev">SETPALETTE</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setpensize"></a> +<h4 class="unnumberedsubsec">setpensize</h4> +<a name="index-setpensize"></a> + +<div class="example"> +<pre class="example">SETPENSIZE size +</pre></div> + +<p>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. +</p> +<hr> +<a name="SETPENPATTERN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETPEN" accesskey="n" rel="next">SETPEN</a>, Previous: <a href="usermanual.html#SETPENSIZE" accesskey="p" rel="prev">SETPENSIZE</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setpenpattern"></a> +<h4 class="unnumberedsubsec">setpenpattern</h4> +<a name="index-setpenpattern"></a> + +<div class="example"> +<pre class="example">SETPENPATTERN pattern +</pre></div> + +<p>sets hardware-dependent pen characteristics. This command is not +guaranteed compatible between implementations on different machines. +</p> +<hr> +<a name="SETPEN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETBACKGROUND" accesskey="n" rel="next">SETBACKGROUND</a>, Previous: <a href="usermanual.html#SETPENPATTERN" accesskey="p" rel="prev">SETPENPATTERN</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setpen"></a> +<h4 class="unnumberedsubsec">setpen</h4> +<a name="index-setpen"></a> + +<div class="example"> +<pre class="example">SETPEN list (library procedure) +</pre></div> + +<p>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 invocation of <code>PEN</code>. +</p> +<p>See <a href="usermanual.html#PEN">PEN</a> . +</p> +<hr> +<a name="SETBACKGROUND"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#SETPEN" accesskey="p" rel="prev">SETPEN</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setbackground"></a> +<h4 class="unnumberedsubsec">setbackground</h4> +<a name="index-setbackground"></a> +<a name="index-setbg"></a> + +<div class="example"> +<pre class="example">SETBACKGROUND colornumber.or.rgblist +SETBG colornumber.or.rgblist +</pre></div> + +<p>set the screen background color by slot number or RGB values. +See <code>SETPENCOLOR</code> for details. +</p> +<p>See <a href="usermanual.html#SETPENCOLOR">SETPENCOLOR</a> . +</p> +<hr> +<a name="PEN-QUERIES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="n" rel="next">SAVING AND LOADING PICTURES</a>, Previous: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="p" rel="prev">PEN AND BACKGROUND CONTROL</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Pen-Queries"></a> +<h3 class="section">7.6 Pen Queries</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENDOWNP" accesskey="1">PENDOWNP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENMODE" accesskey="2">PENMODE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENCOLOR" accesskey="3">PENCOLOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PALETTE" accesskey="4">PALETTE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PENSIZE" accesskey="5">PENSIZE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PEN" accesskey="6">PEN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BACKGROUND" accesskey="7">BACKGROUND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="PENDOWNP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PENMODE" accesskey="n" rel="next">PENMODE</a>, Previous: <a href="usermanual.html#PEN-QUERIES" accesskey="p" rel="prev">PEN QUERIES</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pendownp"></a> +<h4 class="unnumberedsubsec">pendownp</h4> +<a name="index-pendownp"></a> +<a name="index-pendown_003f"></a> + +<div class="example"> +<pre class="example">PENDOWNP +PENDOWN? +</pre></div> + +<p>outputs <code>TRUE</code> if the pen is down, <code>FALSE</code> if it’s up. +</p> +<hr> +<a name="PENMODE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PENCOLOR" accesskey="n" rel="next">PENCOLOR</a>, Previous: <a href="usermanual.html#PENDOWNP" accesskey="p" rel="prev">PENDOWNP</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="penmode"></a> +<h4 class="unnumberedsubsec">penmode</h4> +<a name="index-penmode"></a> + +<div class="example"> +<pre class="example">PENMODE +</pre></div> + +<p>outputs one of the words <code>PAINT</code>, <code>ERASE</code>, or <code>REVERSE</code> according to the +current pen mode. +</p> +<hr> +<a name="PENCOLOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PALETTE" accesskey="n" rel="next">PALETTE</a>, Previous: <a href="usermanual.html#PENMODE" accesskey="p" rel="prev">PENMODE</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pencolor"></a> +<h4 class="unnumberedsubsec">pencolor</h4> +<a name="index-pencolor"></a> +<a name="index-pc"></a> + +<div class="example"> +<pre class="example">PENCOLOR +PC +</pre></div> + +<p>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 <code>SETPENCOLOR</code>. There are initial assignments +for the first 16 colors: +</p> +<div class="example"> +<pre class="example"> 0 black 1 blue 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 +</pre></div> + +<p>but other colors can be assigned to numbers by the <code>PALETTE</code> command. +</p> +<hr> +<a name="PALETTE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PENSIZE" accesskey="n" rel="next">PENSIZE</a>, Previous: <a href="usermanual.html#PENCOLOR" accesskey="p" rel="prev">PENCOLOR</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="palette"></a> +<h4 class="unnumberedsubsec">palette</h4> +<a name="index-palette"></a> + +<div class="example"> +<pre class="example">PALETTE colornumber +</pre></div> + +<p>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. +</p> +<hr> +<a name="PENSIZE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PEN" accesskey="n" rel="next">PEN</a>, Previous: <a href="usermanual.html#PALETTE" accesskey="p" rel="prev">PALETTE</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pensize"></a> +<h4 class="unnumberedsubsec">pensize</h4> +<a name="index-pensize"></a> +<a name="index-penpattern"></a> + +<div class="example"> +<pre class="example">PENSIZE +</pre></div> + +<p>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.) +</p> +<div class="example"> +<pre class="example">PENPATTERN +</pre></div> + +<p>outputs system-specific pen information. +</p> +<hr> +<a name="PEN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BACKGROUND" accesskey="n" rel="next">BACKGROUND</a>, Previous: <a href="usermanual.html#PENSIZE" accesskey="p" rel="prev">PENSIZE</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pen"></a> +<h4 class="unnumberedsubsec">pen</h4> +<a name="index-pen"></a> + +<div class="example"> +<pre class="example">PEN (library procedure) +</pre></div> + +<p>outputs a list containing the pen’s position, mode, thickness, and +hardware-specific characteristics, for use by <code>SETPEN</code>. +</p> +<p>See <a href="usermanual.html#SETPEN">SETPEN</a> . +</p> +<hr> +<a name="BACKGROUND"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#PEN" accesskey="p" rel="prev">PEN</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="background"></a> +<h4 class="unnumberedsubsec">background</h4> +<a name="index-background"></a> +<a name="index-bg"></a> + +<div class="example"> +<pre class="example">BACKGROUND +BG +</pre></div> + +<p>outputs the graphics background color, either as a slot number or +as an RGB list, whichever way it was set. (See <code>PENCOLOR</code>.) +</p> +<hr> +<a name="SAVING-AND-LOADING-PICTURES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MOUSE-QUERIES" accesskey="n" rel="next">MOUSE QUERIES</a>, Previous: <a href="usermanual.html#PEN-QUERIES" accesskey="p" rel="prev">PEN QUERIES</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Saving-and-Loading-Pictures"></a> +<h3 class="section">7.7 Saving and Loading Pictures</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#SAVEPICT" accesskey="1">SAVEPICT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOADPICT" accesskey="2">LOADPICT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EPSPICT" accesskey="3">EPSPICT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="SAVEPICT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOADPICT" accesskey="n" rel="next">LOADPICT</a>, Previous: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="p" rel="prev">SAVING AND LOADING PICTURES</a>, Up: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="u" rel="up">SAVING AND LOADING PICTURES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="savepict"></a> +<h4 class="unnumberedsubsec">savepict</h4> +<a name="index-savepict"></a> + +<div class="example"> +<pre class="example">SAVEPICT filename +</pre></div> + +<p>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 <code>LOADPICT</code>. The format is not portable between platforms, nor is it +readable by other programs. <a href="usermanual.html#EPSPICT">EPSPICT</a> to export Logo graphics for +other programs. +</p> + +<hr> +<a name="LOADPICT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EPSPICT" accesskey="n" rel="next">EPSPICT</a>, Previous: <a href="usermanual.html#SAVEPICT" accesskey="p" rel="prev">SAVEPICT</a>, Up: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="u" rel="up">SAVING AND LOADING PICTURES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="loadpict"></a> +<h4 class="unnumberedsubsec">loadpict</h4> +<a name="index-loadpict"></a> + +<div class="example"> +<pre class="example">LOADPICT filename +</pre></div> + +<p>command. Reads the specified file, which must have been written by a +<code>SAVEPICT</code> 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. +</p> +<p>See <a href="usermanual.html#SAVEPICT">SAVEPICT</a> . +</p> + +<hr> +<a name="EPSPICT"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#LOADPICT" accesskey="p" rel="prev">LOADPICT</a>, Up: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="u" rel="up">SAVING AND LOADING PICTURES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="epspict"></a> +<h4 class="unnumberedsubsec">epspict</h4> +<a name="index-epspict"></a> + +<div class="example"> +<pre class="example">EPSPICT filename +</pre></div> + +<p>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 <code>FILL</code>, +<code>PENERASE</code>, or <code>PENREVERSE</code>; any such instructions will be ignored in the +translation to Postscript form. +</p> + +<hr> +<a name="MOUSE-QUERIES"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="p" rel="prev">SAVING AND LOADING PICTURES</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Mouse-Queries"></a> +<h3 class="section">7.8 Mouse Queries</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#MOUSEPOS" accesskey="1">MOUSEPOS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CLICKPOS" accesskey="2">CLICKPOS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BUTTONP" accesskey="3">BUTTONP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BUTTON" accesskey="4">BUTTON</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="MOUSEPOS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CLICKPOS" accesskey="n" rel="next">CLICKPOS</a>, Previous: <a href="usermanual.html#MOUSE-QUERIES" accesskey="p" rel="prev">MOUSE QUERIES</a>, Up: <a href="usermanual.html#MOUSE-QUERIES" accesskey="u" rel="up">MOUSE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="mousepos"></a> +<h4 class="unnumberedsubsec">mousepos</h4> +<a name="index-mousepos"></a> + +<div class="example"> +<pre class="example">MOUSEPOS +</pre></div> + +<p>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. +</p> +<hr> +<a name="CLICKPOS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BUTTONP" accesskey="n" rel="next">BUTTONP</a>, Previous: <a href="usermanual.html#MOUSEPOS" accesskey="p" rel="prev">MOUSEPOS</a>, Up: <a href="usermanual.html#MOUSE-QUERIES" accesskey="u" rel="up">MOUSE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="clickpos"></a> +<h4 class="unnumberedsubsec">clickpos</h4> +<a name="index-clickpos"></a> + +<div class="example"> +<pre class="example">CLICKPOS +</pre></div> + +<p>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) +</p> +<hr> +<a name="BUTTONP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BUTTON" accesskey="n" rel="next">BUTTON</a>, Previous: <a href="usermanual.html#CLICKPOS" accesskey="p" rel="prev">CLICKPOS</a>, Up: <a href="usermanual.html#MOUSE-QUERIES" accesskey="u" rel="up">MOUSE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="buttonp"></a> +<h4 class="unnumberedsubsec">buttonp</h4> +<a name="index-buttonp"></a> +<a name="index-button_003f"></a> + +<div class="example"> +<pre class="example">BUTTONP +BUTTON? +</pre></div> + +<p>outputs <code>TRUE</code> if a mouse button is down and the mouse is over the +graphics window. Once the button is down, <code>BUTTONP</code> remains true until +the button is released, even if the mouse is dragged out of the +graphics window. +</p> +<hr> +<a name="BUTTON"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#BUTTONP" accesskey="p" rel="prev">BUTTONP</a>, Up: <a href="usermanual.html#MOUSE-QUERIES" accesskey="u" rel="up">MOUSE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="button"></a> +<h4 class="unnumberedsubsec">button</h4> +<a name="index-button"></a> + +<div class="example"> +<pre class="example">BUTTON +</pre></div> + +<p>outputs 0 if no mouse button has been pushed inside the Logo window +since the last call to <code>BUTTON</code>. 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. +</p> +<hr> +<a name="WORKSPACE-MANAGEMENT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="n" rel="next">CONTROL STRUCTURES</a>, Previous: <a href="usermanual.html#GRAPHICS" accesskey="p" rel="prev">GRAPHICS</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Workspace-Management"></a> +<h2 class="chapter">8 Workspace Management</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="1">PROCEDURE DEFINITION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="2">VARIABLE DEFINITION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PROPERTY-LISTS" accesskey="3">PROPERTY LISTS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="4">WORKSPACE PREDICATES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="5">WORKSPACE QUERIES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="6">WORKSPACE INSPECTION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="7">WORKSPACE CONTROL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="PROCEDURE-DEFINITION"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="n" rel="next">VARIABLE DEFINITION</a>, Previous: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="p" rel="prev">WORKSPACE MANAGEMENT</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Procedure-Definition"></a> +<h3 class="section">8.1 Procedure Definition</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#TO" accesskey="1">TO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#DEFINE" accesskey="2">DEFINE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TEXT" accesskey="3">TEXT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FULLTEXT" accesskey="4">FULLTEXT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#COPYDEF" accesskey="5">COPYDEF</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="TO"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#DEFINE" accesskey="n" rel="next">DEFINE</a>, Previous: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="p" rel="prev">PROCEDURE DEFINITION</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="to"></a> +<h4 class="unnumberedsubsec">to</h4> +<a name="index-to"></a> + +<div class="example"> +<pre class="example">TO procname :input1 :input2 ... (special form) +</pre></div> + +<p>command. Prepares Logo to accept a procedure definition. The procedure +will be named <var>procname</var> and there must not already be a procedure by +that name. The inputs will be called <var>input1</var> etc. Any number of +inputs are allowed, including none. Names of procedures and inputs are +case-insensitive. +</p> +<p>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 <em>special form</em> means.) +</p> +<p>This version of Logo allows variable numbers of inputs to a procedure. +After the procedure name come four kinds of things, <em>in this order</em>: +</p> +<div class="example"> +<pre class="example"> 1. 0 or more REQUIRED inputs :FOO :FROBOZZ + 2. 0 or more OPTIONAL inputs [:BAZ 87] [:THINGO 5+9] + 3. 0 or 1 REST input [:GARPLY] + 4. 0 or 1 DEFAULT number 5 +</pre></div> + +<p>Every procedure has a <var>minimum</var>, <var>default</var>, and <var>maximum</var> number of inputs. +(The latter can be infinite.) +</p> +<p>The <var>minimum</var> number of inputs is the number of required inputs, which +must come first. A required input is indicated by the +</p> +<div class="example"> +<pre class="example">:inputname +</pre></div> + +<p>notation. +</p> +<p>After all the required inputs can be zero or more optional inputs, +each of which is represented by the following notation: +</p> +<div class="example"> +<pre class="example">[:inputname default.value.expression] +</pre></div> + +<p>When the procedure is invoked, if actual inputs are not supplied for +these optional inputs, the <var>default value expression</var>s are evaluated to +set values for the corresponding input names. The inputs are processed +from left to right, so a default value expression can be based on +earlier inputs. Example: +</p> +<div class="example"> +<pre class="example">to proc :inlist [:startvalue first :inlist] +</pre></div> + +<p>If the procedure is invoked by saying +</p> +<div class="example"> +<pre class="example">proc [a b c] +</pre></div> + +<p>then the variable <code>inlist</code> will have the value <tt>[A B C]</tt><!-- /@w --> and the +variable <code>startvalue</code> will have the value <tt>A</tt>. If the procedure is invoked +by saying +</p> +<div class="example"> +<pre class="example">(proc [a b c] "x) +</pre></div> + +<p>then <code>inlist</code> will have the value <tt>[A B C]</tt><!-- /@w --> and <code>startvalue</code> +will have the value <tt>X</tt>. +</p> +<p>After all the required and optional input can come a single <em>rest</em> +input, represented by the following notation: +</p> +<div class="example"> +<pre class="example">[:inputname] +</pre></div> + +<p>This is a rest input rather than an optional input because there is no +default value expression. There can be at most one rest input. When +the procedure is invoked, the value of this <var>inputname</var> will be a list +containing all of the actual inputs provided that were not used for +required or optional inputs. Example: +</p> +<div class="example"> +<pre class="example">to proc :in1 [:in2 "foo] [:in3 "baz] [:in4] +</pre></div> + +<p>If this procedure is invoked by saying +</p> +<div class="example"> +<pre class="example">proc "x +</pre></div> + +<p>then <code>in1</code> has the value <tt>X</tt>, <code>in2</code> has the value <tt>FOO</tt>, +<code>in3</code> has the value <tt>BAZ</tt>, and <code>in4</code> has the value <tt>[]</tt> (the +empty list). If it’s invoked by saying +</p> +<div class="example"> +<pre class="example">(proc "a "b "c "d "e) +</pre></div> + +<p>then <code>in1</code> has the value <tt>A</tt>, <code>in2</code> has the value <tt>B</tt>, +<code>in3</code> has the value <tt>C</tt>, and <code>in4</code> has the value <tt>[D E]</tt><!-- /@w -->. +</p> +<p>The <em>maximum</em> number of inputs for a procedure is infinite if a rest input +is given; otherwise, it is the number of required inputs plus the number +of optional inputs. +</p> +<p>The <em>default</em> number of inputs for a procedure, which is the number of +inputs 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 <code>TO</code> line. example: +</p> +<div class="example"> +<pre class="example">to proc :in1 [:in2 "foo] [:in3] 3 +</pre></div> + +<p>This procedure has a minimum of one input, a default of three inputs, +and an infinite maximum. +</p> +<p>Logo responds to the <code>TO</code> command by entering procedure definition mode. +The prompt character changes from <code>?</code> to <code>></code> and whatever instructions you type become part of the definition until you type a line containing +only the word <code>END</code>. +</p> +<hr> +<a name="DEFINE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TEXT" accesskey="n" rel="next">TEXT</a>, Previous: <a href="usermanual.html#TO" accesskey="p" rel="prev">TO</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="define"></a> +<h4 class="unnumberedsubsec">define</h4> +<a name="index-define"></a> + +<div class="example"> +<pre class="example">DEFINE procname text +</pre></div> + +<p>command. Defines a procedure with name <var>procname</var> and text <var>text</var>. If +there is already a procedure with the same name, the new definition +replaces the old one. The <var>text</var> input must be a list whose members are +lists. The first member is a list of inputs; it looks like a <code>TO</code> line +but without the word <code>TO</code>, 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. The remaining sublists of the <var>text</var> +input make up the body of the procedure, with one sublist for each +instruction line of the body. (There is no <code>END</code> line in the text input.) +It is an error to redefine a primitive procedure unless the variable +<code>REDEFP</code> has the value <code>TRUE</code>. +</p> +<p>See <a href="usermanual.html#REDEFP">REDEFP</a> . +</p> +<hr> +<a name="TEXT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FULLTEXT" accesskey="n" rel="next">FULLTEXT</a>, Previous: <a href="usermanual.html#DEFINE" accesskey="p" rel="prev">DEFINE</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="text"></a> +<h4 class="unnumberedsubsec">text</h4> +<a name="index-text"></a> + +<div class="example"> +<pre class="example">TEXT procname +</pre></div> + +<p>outputs the text of the procedure named <var>procname</var> in the form expected +by <code>DEFINE</code>: 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. +</p> +<hr> +<a name="FULLTEXT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#COPYDEF" accesskey="n" rel="next">COPYDEF</a>, Previous: <a href="usermanual.html#TEXT" accesskey="p" rel="prev">TEXT</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="fulltext"></a> +<h4 class="unnumberedsubsec">fulltext</h4> +<a name="index-fulltext"></a> + +<div class="example"> +<pre class="example">FULLTEXT procname +</pre></div> + +<p>outputs a representation of the procedure <var>procname</var> in which formatting +information is preserved. If the procedure was defined with <code>TO</code>, <code>EDIT</code>, +or <code>LOAD</code>, then the output is a list of words. Each word represents one +entire line of the definition in the form output by <code>READWORD</code>, including +extra spaces and continuation lines. The last member of the output +represents the <code>END</code> line. If the procedure was defined with <code>DEFINE</code>, then +the output is a list of lists. If these lists are printed, one per +line, the result will look like a definition using <code>TO</code>. Note: the output +from <code>FULLTEXT</code> is not suitable for use as input to <code>DEFINE</code>! +</p> +<p>See <a href="usermanual.html#TEXT">TEXT</a>. +</p> + +<hr> +<a name="COPYDEF"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#FULLTEXT" accesskey="p" rel="prev">FULLTEXT</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="copydef"></a> +<h4 class="unnumberedsubsec">copydef</h4> +<a name="index-copydef"></a> + +<div class="example"> +<pre class="example">COPYDEF newname oldname +</pre></div> + +<p>command. Makes <var>newname</var> a procedure identical to <var>oldname</var>. The +latter may be a primitive. If <var>newname</var> was already defined, its +previous definition is lost. If <var>newname</var> was already a primitive, the +redefinition is not permitted unless the variable <code>REDEFP</code> has the value +<code>TRUE</code>. +</p> +<p>Note: dialects of Logo differ as to the order of inputs to <code>COPYDEF</code>. +This dialect uses "<code>MAKE</code> order," not "<code>NAME</code> order." +</p> +<p>See <a href="usermanual.html#REDEFP">REDEFP</a> , +<a href="usermanual.html#SAVE">SAVE</a> , +<a href="usermanual.html#PO">PO</a> , +<a href="usermanual.html#POT">POT</a> . +</p> + +<hr> +<a name="VARIABLE-DEFINITION"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PROPERTY-LISTS" accesskey="n" rel="next">PROPERTY LISTS</a>, Previous: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="p" rel="prev">PROCEDURE DEFINITION</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Variable-Definition"></a> +<h3 class="section">8.2 Variable Definition</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#MAKE" accesskey="1">MAKE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NAME" accesskey="2">NAME</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOCAL" accesskey="3">LOCAL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOCALMAKE" accesskey="4">LOCALMAKE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#THING" accesskey="5">THING</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GLOBAL" accesskey="6">GLOBAL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="MAKE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NAME" accesskey="n" rel="next">NAME</a>, Previous: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="p" rel="prev">VARIABLE DEFINITION</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="make"></a> +<h4 class="unnumberedsubsec">make</h4> +<a name="index-make"></a> + +<div class="example"> +<pre class="example">MAKE varname value +</pre></div> + +<p>command. Assigns the value <var>value</var> to the variable named <var>varname</var>, +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. +</p> +<hr> +<a name="NAME"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOCAL" accesskey="n" rel="next">LOCAL</a>, Previous: <a href="usermanual.html#MAKE" accesskey="p" rel="prev">MAKE</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="name"></a> +<h4 class="unnumberedsubsec">name</h4> +<a name="index-name"></a> + +<div class="example"> +<pre class="example">NAME value varname (library procedure) +</pre></div> + +<p>command. Same as <code>MAKE</code> but with the inputs in reverse order. +</p> +<hr> +<a name="LOCAL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOCALMAKE" accesskey="n" rel="next">LOCALMAKE</a>, Previous: <a href="usermanual.html#NAME" accesskey="p" rel="prev">NAME</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="local"></a> +<h4 class="unnumberedsubsec">local</h4> +<a name="index-local"></a> + +<div class="example"> +<pre class="example">LOCAL varname +LOCAL varnamelist +(LOCAL varname1 varname2 ...) +</pre></div> + +<p>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 <code>LOCAL</code> have no initial value; they must be +assigned a value (e.g., with <code>MAKE</code>) before the procedure attempts to read +their value. +</p> +<p>See <a href="usermanual.html#MAKE">MAKE</a> . +</p> +<hr> +<a name="LOCALMAKE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#THING" accesskey="n" rel="next">THING</a>, Previous: <a href="usermanual.html#LOCAL" accesskey="p" rel="prev">LOCAL</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="localmake"></a> +<h4 class="unnumberedsubsec">localmake</h4> +<a name="index-localmake"></a> + +<div class="example"> +<pre class="example">LOCALMAKE varname value (library procedure) +</pre></div> + +<p>command. Makes the named variable local, like <code>LOCAL</code>, and assigns it the +given value, like <code>MAKE</code>. +</p> +<p>See <a href="usermanual.html#LOCAL">LOCAL</a> , +See <a href="usermanual.html#MAKE">MAKE</a> . +</p> + +<hr> +<a name="THING"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GLOBAL" accesskey="n" rel="next">GLOBAL</a>, Previous: <a href="usermanual.html#LOCALMAKE" accesskey="p" rel="prev">LOCALMAKE</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="thing"></a> +<h4 class="unnumberedsubsec">thing</h4> +<a name="index-thing"></a> + +<div class="example"> +<pre class="example">THING varname +:quoted.varname +</pre></div> + +<p>outputs the value of the variable whose name is the 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 <code>THING</code> but for +the combination +</p> +<div class="example"> +<pre class="example">thing " +</pre></div> + +<p>so that <tt>:FOO</tt><!-- /@w --> means <tt>THING "FOO</tt><!-- /@w -->. +</p> +<hr> +<a name="GLOBAL"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#THING" accesskey="p" rel="prev">THING</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="global"></a> +<h4 class="unnumberedsubsec">global</h4> +<a name="index-global"></a> + +<div class="example"> +<pre class="example">GLOBAL varname +GLOBAL varnamelist +(GLOBAL varname1 varname2 ...) +</pre></div> + +<p>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 <code>SETXYZ</code> for a variable +<code>XYZ</code> that does not already have a value; <tt>GLOBAL "XYZ</tt><!-- /@w --> 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. +</p> + +<hr> +<a name="PROPERTY-LISTS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="n" rel="next">WORKSPACE PREDICATES</a>, Previous: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="p" rel="prev">VARIABLE DEFINITION</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Property-Lists"></a> +<h3 class="section">8.3 Property Lists</h3> + +<p>Note: Names of property lists are always case-insensitive. Names of +individual properties are case-sensitive or case-insensitive depending +on the value of <code>CASEIGNOREDP</code>, which is <code>TRUE</code> by default. +</p> +<p>See <a href="usermanual.html#CASEIGNOREDP">CASEIGNOREDP</a> . +</p> +<p>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 (<code>CONTENTS</code>, <code>PLISTS</code>, etc.) +list only nonempty ones. To "erase" a property list <a href="usermanual.html#ERASE">ERASE</a> means to make +it empty, removing all properties from it. +</p> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#PPROP" accesskey="1">PPROP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GPROP" accesskey="2">GPROP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REMPROP" accesskey="3">REMPROP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PLIST" accesskey="4">PLIST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="PPROP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GPROP" accesskey="n" rel="next">GPROP</a>, Previous: <a href="usermanual.html#PROPERTY-LISTS" accesskey="p" rel="prev">PROPERTY LISTS</a>, Up: <a href="usermanual.html#PROPERTY-LISTS" accesskey="u" rel="up">PROPERTY LISTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pprop"></a> +<h4 class="unnumberedsubsec">pprop</h4> +<a name="index-pprop"></a> + +<div class="example"> +<pre class="example">PPROP plistname propname value +</pre></div> + +<p>command. Adds a property to the <var>plistname</var> property list with name +<var>propname</var> and value <var>value</var>. +</p> +<hr> +<a name="GPROP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REMPROP" accesskey="n" rel="next">REMPROP</a>, Previous: <a href="usermanual.html#PPROP" accesskey="p" rel="prev">PPROP</a>, Up: <a href="usermanual.html#PROPERTY-LISTS" accesskey="u" rel="up">PROPERTY LISTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="gprop"></a> +<h4 class="unnumberedsubsec">gprop</h4> +<a name="index-gprop"></a> + +<div class="example"> +<pre class="example">GPROP plistname propname +</pre></div> + +<p>outputs the value of the <var>propname</var> property in the <var>plistname</var> property +list, or the empty list if there is no such property. +</p> +<hr> +<a name="REMPROP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PLIST" accesskey="n" rel="next">PLIST</a>, Previous: <a href="usermanual.html#GPROP" accesskey="p" rel="prev">GPROP</a>, Up: <a href="usermanual.html#PROPERTY-LISTS" accesskey="u" rel="up">PROPERTY LISTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="remprop"></a> +<h4 class="unnumberedsubsec">remprop</h4> +<a name="index-remprop"></a> + +<div class="example"> +<pre class="example">REMPROP plistname propname +</pre></div> + +<p>command. Removes the property named <var>propname</var> from the property list +named <var>plistname</var>. +</p> +<hr> +<a name="PLIST"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#REMPROP" accesskey="p" rel="prev">REMPROP</a>, Up: <a href="usermanual.html#PROPERTY-LISTS" accesskey="u" rel="up">PROPERTY LISTS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="plist"></a> +<h4 class="unnumberedsubsec">plist</h4> +<a name="index-plist"></a> + +<div class="example"> +<pre class="example">PLIST plistname +</pre></div> + +<p>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 <var>plistname</var>. The output is a copy of the actual property +list; changing properties later will not magically change a list output +earlier by <code>PLIST</code>. +</p> + +<hr> +<a name="WORKSPACE-PREDICATES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="n" rel="next">WORKSPACE QUERIES</a>, Previous: <a href="usermanual.html#PROPERTY-LISTS" accesskey="p" rel="prev">PROPERTY LISTS</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Workspace-Predicates"></a> +<h3 class="section">8.4 Workspace Predicates</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#PROCEDUREP" accesskey="1">PROCEDUREP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRIMITIVEP" accesskey="2">PRIMITIVEP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#DEFINEDP" accesskey="3">DEFINEDP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NAMEP" accesskey="4">NAMEP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PLISTP" accesskey="5">PLISTP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="PROCEDUREP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PRIMITIVEP" accesskey="n" rel="next">PRIMITIVEP</a>, Previous: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="p" rel="prev">WORKSPACE PREDICATES</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="procedurep"></a> +<h4 class="unnumberedsubsec">procedurep</h4> +<a name="index-procedurep"></a> +<a name="index-procedure_003f"></a> + +<div class="example"> +<pre class="example">PROCEDUREP name +PROCEDURE? name +</pre></div> + +<p>outputs <code>TRUE</code> if the input is the name of a procedure. +</p> +<hr> +<a name="PRIMITIVEP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#DEFINEDP" accesskey="n" rel="next">DEFINEDP</a>, Previous: <a href="usermanual.html#PROCEDUREP" accesskey="p" rel="prev">PROCEDUREP</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="primitivep"></a> +<h4 class="unnumberedsubsec">primitivep</h4> +<a name="index-primitivep"></a> +<a name="index-primitive_003f"></a> + +<div class="example"> +<pre class="example">PRIMITIVEP name +PRIMITIVE? name +</pre></div> + +<p>outputs <code>TRUE</code> 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. +</p> +<hr> +<a name="DEFINEDP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NAMEP" accesskey="n" rel="next">NAMEP</a>, Previous: <a href="usermanual.html#PRIMITIVEP" accesskey="p" rel="prev">PRIMITIVEP</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="definedp"></a> +<h4 class="unnumberedsubsec">definedp</h4> +<a name="index-definedp"></a> +<a name="index-defined_003f"></a> + +<div class="example"> +<pre class="example">DEFINEDP name +DEFINED? name +</pre></div> + +<p>outputs <code>TRUE</code> if the input is the name of a user-defined procedure, +including a library procedure. +</p> +<hr> +<a name="NAMEP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PLISTP" accesskey="n" rel="next">PLISTP</a>, Previous: <a href="usermanual.html#DEFINEDP" accesskey="p" rel="prev">DEFINEDP</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="namep"></a> +<h4 class="unnumberedsubsec">namep</h4> +<a name="index-namep"></a> +<a name="index-name_003f"></a> + +<div class="example"> +<pre class="example">NAMEP name +NAME? name +</pre></div> + +<p>outputs <code>TRUE</code> if the input is the name of a variable. +</p> +<hr> +<a name="PLISTP"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#NAMEP" accesskey="p" rel="prev">NAMEP</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="plistp"></a> +<h4 class="unnumberedsubsec">plistp</h4> +<a name="index-plistp"></a> +<a name="index-plist_003f"></a> + +<div class="example"> +<pre class="example">PLISTP name +PLIST? name +</pre></div> + +<p>outputs <code>TRUE</code> if the input is the name of a <em>nonempty</em> property list. +(In principle every word is the name of a property list; if you haven’t +put any properties in it, <code>PLIST</code> of that name outputs an empty list, +rather than giving an error message.) +</p> + +<hr> +<a name="WORKSPACE-QUERIES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="n" rel="next">WORKSPACE INSPECTION</a>, Previous: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="p" rel="prev">WORKSPACE PREDICATES</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Workspace-Queries"></a> +<h3 class="section">8.5 Workspace Queries</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#CONTENTS" accesskey="1">CONTENTS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BURIED" accesskey="2">BURIED</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TRACED" accesskey="3">TRACED</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#STEPPED" accesskey="4">STEPPED</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PROCEDURES" accesskey="5">PROCEDURES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRIMITIVES" accesskey="6">PRIMITIVES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NAMES" accesskey="7">NAMES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PLISTS" accesskey="8">PLISTS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NAMELIST" accesskey="9">NAMELIST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PLLIST">PLLIST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ARITY">ARITY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#NODES">NODES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<p>Note: All procedures whose input is indicated as <var>contentslist</var> 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 +<code>CONTENTS</code> command above. +</p> +<hr> +<a name="CONTENTS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BURIED" accesskey="n" rel="next">BURIED</a>, Previous: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="p" rel="prev">WORKSPACE QUERIES</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="contents"></a> +<h4 class="unnumberedsubsec">contents</h4> +<a name="index-contents"></a> + +<div class="example"> +<pre class="example">CONTENTS +</pre></div> + +<p>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. +</p> +<hr> +<a name="BURIED"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TRACED" accesskey="n" rel="next">TRACED</a>, Previous: <a href="usermanual.html#CONTENTS" accesskey="p" rel="prev">CONTENTS</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="buried"></a> +<h4 class="unnumberedsubsec">buried</h4> +<a name="index-buried"></a> + +<div class="example"> +<pre class="example">BURIED +</pre></div> + +<p>outputs a contents list including all buried named items in the +workspace. +</p> +<hr> +<a name="TRACED"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#STEPPED" accesskey="n" rel="next">STEPPED</a>, Previous: <a href="usermanual.html#BURIED" accesskey="p" rel="prev">BURIED</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="traced"></a> +<h4 class="unnumberedsubsec">traced</h4> +<a name="index-traced"></a> + +<div class="example"> +<pre class="example">TRACED +</pre></div> + +<p>outputs a contents list including all traced named items in the +workspace. +</p> +<hr> +<a name="STEPPED"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PROCEDURES" accesskey="n" rel="next">PROCEDURES</a>, Previous: <a href="usermanual.html#TRACED" accesskey="p" rel="prev">TRACED</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="stepped"></a> +<h4 class="unnumberedsubsec">stepped</h4> +<a name="index-stepped"></a> + +<div class="example"> +<pre class="example">STEPPED +</pre></div> + +<p>outputs a contents list including all stepped named items in the +workspace. +</p> + +<hr> +<a name="PROCEDURES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PRIMITIVES" accesskey="n" rel="next">PRIMITIVES</a>, Previous: <a href="usermanual.html#STEPPED" accesskey="p" rel="prev">STEPPED</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="procedures"></a> +<h4 class="unnumberedsubsec">procedures</h4> +<a name="index-procedures"></a> + +<div class="example"> +<pre class="example">PROCEDURES +</pre></div> + +<p>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.) +</p> + +<hr> +<a name="PRIMITIVES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NAMES" accesskey="n" rel="next">NAMES</a>, Previous: <a href="usermanual.html#PROCEDURES" accesskey="p" rel="prev">PROCEDURES</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="primitives"></a> +<h4 class="unnumberedsubsec">primitives</h4> +<a name="index-primitives"></a> + +<div class="example"> +<pre class="example">PRIMITIVES +</pre></div> + +<p>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.) +</p> +<hr> +<a name="NAMES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PLISTS" accesskey="n" rel="next">PLISTS</a>, Previous: <a href="usermanual.html#PRIMITIVES" accesskey="p" rel="prev">PRIMITIVES</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="names"></a> +<h4 class="unnumberedsubsec">names</h4> +<a name="index-names"></a> + +<div class="example"> +<pre class="example">NAMES +</pre></div> + +<p>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. +</p> +<hr> +<a name="PLISTS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NAMELIST" accesskey="n" rel="next">NAMELIST</a>, Previous: <a href="usermanual.html#NAMES" accesskey="p" rel="prev">NAMES</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="plists"></a> +<h4 class="unnumberedsubsec">plists</h4> +<a name="index-plists"></a> + +<div class="example"> +<pre class="example">PLISTS +</pre></div> + +<p>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. +</p> +<hr> +<a name="NAMELIST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PLLIST" accesskey="n" rel="next">PLLIST</a>, Previous: <a href="usermanual.html#PLISTS" accesskey="p" rel="prev">PLISTS</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="namelist"></a> +<h4 class="unnumberedsubsec">namelist</h4> +<a name="index-namelist"></a> + +<div class="example"> +<pre class="example">NAMELIST varname (library procedure) +NAMELIST varnamelist +</pre></div> + +<p>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. +</p> +<hr> +<a name="PLLIST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ARITY" accesskey="n" rel="next">ARITY</a>, Previous: <a href="usermanual.html#NAMELIST" accesskey="p" rel="prev">NAMELIST</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pllist"></a> +<h4 class="unnumberedsubsec">pllist</h4> +<a name="index-pllist"></a> + +<div class="example"> +<pre class="example">PLLIST plname (library procedure) +PLLIST plnamelist +</pre></div> + +<p>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. +</p> +<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> . +</p> +<hr> +<a name="ARITY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#NODES" accesskey="n" rel="next">NODES</a>, Previous: <a href="usermanual.html#PLLIST" accesskey="p" rel="prev">PLLIST</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="arity"></a> +<h4 class="unnumberedsubsec">arity</h4> +<a name="index-arity"></a> + +<div class="example"> +<pre class="example">ARITY procedurename +</pre></div> + +<p>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. +</p> +<hr> +<a name="NODES"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#ARITY" accesskey="p" rel="prev">ARITY</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="nodes"></a> +<h4 class="unnumberedsubsec">nodes</h4> +<a name="index-nodes"></a> + +<div class="example"> +<pre class="example">NODES +</pre></div> + +<p>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 +<code>NODES</code>. (A node is a 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 <code>GC</code> at the beginning of each +iteration, since otherwise the maximum will include storage that is +unused but not yet collected. +</p> +<hr> +<a name="WORKSPACE-INSPECTION"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="n" rel="next">WORKSPACE CONTROL</a>, Previous: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="p" rel="prev">WORKSPACE QUERIES</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Workspace-Inspection"></a> +<h3 class="section">8.6 Workspace Inspection</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#PO" accesskey="1">PO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#POALL" accesskey="2">POALL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#POPS" accesskey="3">POPS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PONS" accesskey="4">PONS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#POPLS" accesskey="5">POPLS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PON" accesskey="6">PON</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#POPL" accesskey="7">POPL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#POT" accesskey="8">POT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#POTS" accesskey="9">POTS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="PO"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#POALL" accesskey="n" rel="next">POALL</a>, Previous: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="p" rel="prev">WORKSPACE INSPECTION</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="po"></a> +<h4 class="unnumberedsubsec">po</h4> +<a name="index-printout"></a> +<a name="index-po"></a> + +<div class="example"> +<pre class="example">PRINTOUT contentslist +PO contentslist +</pre></div> + +<p>command. Prints to the write stream the definitions of all procedures, +variables, and property lists named in the input contents list. +</p> +<hr> +<a name="POALL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#POPS" accesskey="n" rel="next">POPS</a>, Previous: <a href="usermanual.html#PO" accesskey="p" rel="prev">PO</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="poall"></a> +<h4 class="unnumberedsubsec">poall</h4> +<a name="index-poall"></a> + +<div class="example"> +<pre class="example">POALL (library procedure) +</pre></div> + +<p>command. Prints all unburied definitions in the workspace. Abbreviates +<tt>PO CONTENTS</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> . +</p> +<hr> +<a name="POPS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PONS" accesskey="n" rel="next">PONS</a>, Previous: <a href="usermanual.html#POALL" accesskey="p" rel="prev">POALL</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pops"></a> +<h4 class="unnumberedsubsec">pops</h4> +<a name="index-pops"></a> + +<div class="example"> +<pre class="example">POPS (library procedure) +</pre></div> + +<p>command. Prints the definitions of all unburied procedures in the +workspace. Abbreviates <tt>PO PROCEDURES</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#PO">PO</a> , +<a href="usermanual.html#PROCEDURES">PROCEDURES</a> . +</p> +<hr> +<a name="PONS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#POPLS" accesskey="n" rel="next">POPLS</a>, Previous: <a href="usermanual.html#POPS" accesskey="p" rel="prev">POPS</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pons"></a> +<h4 class="unnumberedsubsec">pons</h4> +<a name="index-pons"></a> + +<div class="example"> +<pre class="example">PONS (library procedure) +</pre></div> + +<p>command. Prints the definitions of all unburied variables in the +workspace. Abbreviates <tt>PO NAMES</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#PO">PO</a> , +<a href="usermanual.html#NAMES">NAMES</a> . +</p> +<hr> +<a name="POPLS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PON" accesskey="n" rel="next">PON</a>, Previous: <a href="usermanual.html#PONS" accesskey="p" rel="prev">PONS</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="popls"></a> +<h4 class="unnumberedsubsec">popls</h4> +<a name="index-popls"></a> + +<div class="example"> +<pre class="example">POPLS (library procedure) +</pre></div> + +<p>command. Prints the contents of all unburied nonempty property lists in the +workspace. Abbreviates <tt>PO PLISTS</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#PO">PO</a> , +<a href="usermanual.html#PLISTS">PLISTS</a> . +</p> +<hr> +<a name="PON"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#POPL" accesskey="n" rel="next">POPL</a>, Previous: <a href="usermanual.html#POPLS" accesskey="p" rel="prev">POPLS</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pon"></a> +<h4 class="unnumberedsubsec">pon</h4> +<a name="index-pon"></a> + +<div class="example"> +<pre class="example">PON varname (library procedure) +PON varnamelist +</pre></div> + +<p>command. Prints the definitions of the named variable(s). +<br> +Abbreviates <tt>PO NAMELIST varname(list)</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#PO">PO</a> , +<a href="usermanual.html#NAMELIST">NAMELIST</a> . +</p> +<hr> +<a name="POPL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#POT" accesskey="n" rel="next">POT</a>, Previous: <a href="usermanual.html#PON" accesskey="p" rel="prev">PON</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="popl"></a> +<h4 class="unnumberedsubsec">popl</h4> +<a name="index-popl"></a> + +<div class="example"> +<pre class="example">POPL plname (library procedure) +POPL plnamelist +</pre></div> + +<p>command. Prints the definitions of the named property list(s). +<br> +Abbreviates <tt>PO PLLIST plname(list)</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#PO">PO</a> , +<a href="usermanual.html#PLLIST">PLLIST</a> . +</p> +<hr> +<a name="POT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#POTS" accesskey="n" rel="next">POTS</a>, Previous: <a href="usermanual.html#POPL" accesskey="p" rel="prev">POPL</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pot"></a> +<h4 class="unnumberedsubsec">pot</h4> +<a name="index-pot"></a> + +<div class="example"> +<pre class="example">POT contentslist +</pre></div> + +<p>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 +<code>PPROP</code> instructions as in <code>PO</code>. +</p> +<p>See <a href="usermanual.html#PPROP">PPROP</a> , +<a href="usermanual.html#PO">PO</a> . +</p> +<hr> +<a name="POTS"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#POT" accesskey="p" rel="prev">POT</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pots"></a> +<h4 class="unnumberedsubsec">pots</h4> +<a name="index-pots"></a> + +<div class="example"> +<pre class="example">POTS (library procedure) +</pre></div> + +<p>command. Prints the title lines of all unburied procedures in the +workspace. Abbreviates <tt>POT PROCEDURES</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#PROCEDURES">PROCEDURES</a> . +</p> + +<hr> +<a name="WORKSPACE-CONTROL"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="p" rel="prev">WORKSPACE INSPECTION</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Workspace-Control"></a> +<h3 class="section">8.7 Workspace Control</h3> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERASE" accesskey="1">ERASE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERALL" accesskey="2">ERALL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERPS" accesskey="3">ERPS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERNS" accesskey="4">ERNS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERPLS" accesskey="5">ERPLS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERN" accesskey="6">ERN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERPL" accesskey="7">ERPL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BURY" accesskey="8">BURY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BURYALL" accesskey="9">BURYALL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BURYNAME">BURYNAME</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UNBURY">UNBURY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UNBURYALL">UNBURYALL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UNBURYNAME">UNBURYNAME</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BURIEDP">BURIEDP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TRACE">TRACE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UNTRACE">UNTRACE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TRACEDP">TRACEDP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#STEP">STEP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UNSTEP">UNSTEP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#STEPPEDP">STEPPEDP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EDIT">EDIT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EDITFILE">EDITFILE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EDALL">EDALL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EDPS">EDPS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EDNS">EDNS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EDPLS">EDPLS</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EDN">EDN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#EDPL">EDPL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SAVE">SAVE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SAVEL">SAVEL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOAD">LOAD</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CSLSLOAD">CSLSLOAD</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#HELP">HELP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETEDITOR">SETEDITOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETLIBLOC">SETLIBLOC</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETHELPLOC">SETHELPLOC</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETCSLSLOC">SETCSLSLOC</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#SETTEMPLOC">SETTEMPLOC</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GC">GC</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#g_t_002eSETSEGMENTSIZE">.SETSEGMENTSIZE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="ERASE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERALL" accesskey="n" rel="next">ERALL</a>, Previous: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="p" rel="prev">WORKSPACE CONTROL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="erase"></a> +<h4 class="unnumberedsubsec">erase</h4> +<a name="index-erase"></a> +<a name="index-er"></a> + +<div class="example"> +<pre class="example">ERASE contentslist +ER contentslist +</pre></div> + +<p>command. Erases from the workspace the procedures, variables, and +property lists named in the input. Primitive procedures may not be +erased unless the variable <code>REDEFP</code> has the value <code>TRUE</code>. +</p> +<p>See <a href="usermanual.html#REDEFP">REDEFP</a> . +</p> +<hr> +<a name="ERALL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERPS" accesskey="n" rel="next">ERPS</a>, Previous: <a href="usermanual.html#ERASE" accesskey="p" rel="prev">ERASE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="erall"></a> +<h4 class="unnumberedsubsec">erall</h4> +<a name="index-erall"></a> + +<div class="example"> +<pre class="example">ERALL +</pre></div> + +<p>command. Erases all unburied procedures, variables, and property lists +from the workspace. Abbreviates <tt>ERASE CONTENTS</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> . +</p> +<hr> +<a name="ERPS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERNS" accesskey="n" rel="next">ERNS</a>, Previous: <a href="usermanual.html#ERALL" accesskey="p" rel="prev">ERALL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="erps"></a> +<h4 class="unnumberedsubsec">erps</h4> +<a name="index-erps"></a> + +<div class="example"> +<pre class="example">ERPS +</pre></div> + +<p>command. Erases all unburied procedures from the workspace. +<br> +Abbreviates <tt>ERASE PROCEDURES</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#ERASE">ERASE</a> , +<a href="usermanual.html#PROCEDURES">PROCEDURES</a> . +</p> +<hr> +<a name="ERNS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERPLS" accesskey="n" rel="next">ERPLS</a>, Previous: <a href="usermanual.html#ERPS" accesskey="p" rel="prev">ERPS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="erns"></a> +<h4 class="unnumberedsubsec">erns</h4> +<a name="index-erns"></a> + +<div class="example"> +<pre class="example">ERNS +</pre></div> + +<p>command. Erases all unburied variables from the workspace. Abbreviates +<tt>ERASE NAMES</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#ERASE">ERASE</a> , +<a href="usermanual.html#NAMES">NAMES</a> . +</p> +<hr> +<a name="ERPLS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERN" accesskey="n" rel="next">ERN</a>, Previous: <a href="usermanual.html#ERNS" accesskey="p" rel="prev">ERNS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="erpls"></a> +<h4 class="unnumberedsubsec">erpls</h4> +<a name="index-erpls"></a> + +<div class="example"> +<pre class="example">ERPLS +</pre></div> + +<p>command. Erases all unburied property lists from the workspace. +<br> +Abbreviates <tt>ERASE PLISTS</tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#ERASE">ERASE</a> , +<a href="usermanual.html#PLISTS">PLISTS</a> . +</p> +<hr> +<a name="ERN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERPL" accesskey="n" rel="next">ERPL</a>, Previous: <a href="usermanual.html#ERPLS" accesskey="p" rel="prev">ERPLS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="ern"></a> +<h4 class="unnumberedsubsec">ern</h4> +<a name="index-ern"></a> + +<div class="example"> +<pre class="example">ERN varname (library procedure) +ERN varnamelist +</pre></div> + +<p>command. Erases from the workspace the variable(s) named in the input. +Abbreviates <tt>ERASE NAMELIST <var>varname(list)</var></tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#ERASE">ERASE</a> , +<a href="usermanual.html#NAMELIST">NAMELIST</a> . +</p> +<hr> +<a name="ERPL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BURY" accesskey="n" rel="next">BURY</a>, Previous: <a href="usermanual.html#ERN" accesskey="p" rel="prev">ERN</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="erpl"></a> +<h4 class="unnumberedsubsec">erpl</h4> +<a name="index-erpl"></a> + +<div class="example"> +<pre class="example">ERPL plname (library procedure) +ERPL plnamelist +</pre></div> + +<p>command. Erases from the workspace the property list(s) named in the +input. Abbreviates <tt>ERASE PLLIST <var>plname(list)</var></tt><!-- /@w -->. +</p> +<p>See <a href="usermanual.html#ERASE">ERASE</a> , +<a href="usermanual.html#PLLIST">PLLIST</a> . +</p> +<hr> +<a name="BURY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BURYALL" accesskey="n" rel="next">BURYALL</a>, Previous: <a href="usermanual.html#ERPL" accesskey="p" rel="prev">ERPL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="bury"></a> +<h4 class="unnumberedsubsec">bury</h4> +<a name="index-bury"></a> + +<div class="example"> +<pre class="example">BURY contentslist +</pre></div> + +<p>command. Buries the procedures, variables, and property lists named in +the input. A buried item is not included in the lists output by +<code>CONTENTS</code>, <code>PROCEDURES</code>, <code>VARIABLES</code>, and <code>PLISTS</code>, but is included in the list +output by <code>BURIED</code>. By implication, buried things are not printed by +<code>POALL</code> or saved by <code>SAVE</code>. +</p> +<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> , +<a href="usermanual.html#PROCEDURES">PROCEDURES</a> , +<a href="usermanual.html#PONS">PONS</a> , +<a href="usermanual.html#PLISTS">PLISTS</a> , +<a href="usermanual.html#POALL">POALL</a> , +<a href="usermanual.html#SAVE">SAVE</a> . +</p> +<hr> +<a name="BURYALL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BURYNAME" accesskey="n" rel="next">BURYNAME</a>, Previous: <a href="usermanual.html#BURY" accesskey="p" rel="prev">BURY</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="buryall"></a> +<h4 class="unnumberedsubsec">buryall</h4> +<a name="index-buryall"></a> + +<div class="example"> +<pre class="example">BURYALL (library procedure) +</pre></div> + +<p>command. Abbreviates <tt>BURY CONTENTS</tt>. +</p> +<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> . +</p> +<hr> +<a name="BURYNAME"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#UNBURY" accesskey="n" rel="next">UNBURY</a>, Previous: <a href="usermanual.html#BURYALL" accesskey="p" rel="prev">BURYALL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="buryname"></a> +<h4 class="unnumberedsubsec">buryname</h4> +<a name="index-buryname"></a> + +<div class="example"> +<pre class="example">BURYNAME varname (library procedure) +BURYNAME varnamelist +</pre></div> + +<p>command. Abbreviates <tt>BURY NAMELIST <code>varname(list)</code></tt>. +</p> +<p>See <a href="usermanual.html#BURY">BURY</a> , +<a href="usermanual.html#NAMELIST">NAMELIST</a> . +</p> +<hr> +<a name="UNBURY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#UNBURYALL" accesskey="n" rel="next">UNBURYALL</a>, Previous: <a href="usermanual.html#BURYNAME" accesskey="p" rel="prev">BURYNAME</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="unbury"></a> +<h4 class="unnumberedsubsec">unbury</h4> +<a name="index-unbury"></a> + +<div class="example"> +<pre class="example">UNBURY contentslist +</pre></div> + +<p>command. Unburies the procedures, variables, and property lists named +in the input. That is, the named items will be returned to view in +<code>CONTENTS</code>, etc. +</p> +<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> . +</p> +<hr> +<a name="UNBURYALL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#UNBURYNAME" accesskey="n" rel="next">UNBURYNAME</a>, Previous: <a href="usermanual.html#UNBURY" accesskey="p" rel="prev">UNBURY</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="unburyall"></a> +<h4 class="unnumberedsubsec">unburyall</h4> +<a name="index-unburyall"></a> + +<div class="example"> +<pre class="example">UNBURYALL (library procedure) +</pre></div> + +<p>command. Abbreviates <tt>UNBURY BURIED</tt>. +</p> +<p>See <a href="usermanual.html#BURIED">BURIED</a> . +</p> +<hr> +<a name="UNBURYNAME"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BURIEDP" accesskey="n" rel="next">BURIEDP</a>, Previous: <a href="usermanual.html#UNBURYALL" accesskey="p" rel="prev">UNBURYALL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="unburyname"></a> +<h4 class="unnumberedsubsec">unburyname</h4> +<a name="index-unburyname"></a> + +<div class="example"> +<pre class="example">UNBURYNAME varname (library procedure) +UNBURYNAME varnamelist +</pre></div> + +<p>command. Abbreviates <tt>UNBURY NAMELIST <var>varname(list)</var></tt>. +</p> +<p>See <a href="usermanual.html#UNBURY">UNBURY</a> , +<a href="usermanual.html#NAMELIST">NAMELIST</a> . +</p> +<hr> +<a name="BURIEDP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TRACE" accesskey="n" rel="next">TRACE</a>, Previous: <a href="usermanual.html#UNBURYNAME" accesskey="p" rel="prev">UNBURYNAME</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="buriedp"></a> +<h4 class="unnumberedsubsec">buriedp</h4> +<a name="index-buriedp"></a> +<a name="index-buried_003f"></a> + +<div class="example"> +<pre class="example">BURIEDP contentslist +BURIED? contentslist +</pre></div> + +<p>outputs <code>TRUE</code> if the first procedure, variable, or property list named in +the contents list is buried, <code>FALSE</code> 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 <code>BURIEDP [[] +[<var>variable</var>]]</code> or <code>BURIEDP [[] [] [<var>proplist</var>]]</code>. +</p> + + +<hr> +<a name="TRACE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#UNTRACE" accesskey="n" rel="next">UNTRACE</a>, Previous: <a href="usermanual.html#BURIEDP" accesskey="p" rel="prev">BURIEDP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="trace"></a> +<h4 class="unnumberedsubsec">trace</h4> +<a name="index-trace"></a> + +<div class="example"> +<pre class="example">TRACE contentslist +</pre></div> + +<p>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 <code>STOP</code>s or <code>OUTPUT</code>s. A message is printed +whenever a new value is assigned to a traced variable using <code>MAKE</code>. A +message is printed whenever a new property is given to a traced property +list using <code>PPROP</code>. +</p> +<p>See <a href="usermanual.html#STOP">STOP</a> , +<a href="usermanual.html#OUTPUT">OUTPUT</a> , +<a href="usermanual.html#MAKE">MAKE</a> , +<a href="usermanual.html#PPROP">PPROP</a> . +</p> +<hr> +<a name="UNTRACE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TRACEDP" accesskey="n" rel="next">TRACEDP</a>, Previous: <a href="usermanual.html#TRACE" accesskey="p" rel="prev">TRACE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="untrace"></a> +<h4 class="unnumberedsubsec">untrace</h4> +<a name="index-untrace"></a> + +<div class="example"> +<pre class="example">UNTRACE contentslist +</pre></div> + +<p>command. Turns off tracing for the named items. +</p> +<hr> +<a name="TRACEDP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#STEP" accesskey="n" rel="next">STEP</a>, Previous: <a href="usermanual.html#UNTRACE" accesskey="p" rel="prev">UNTRACE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="tracedp"></a> +<h4 class="unnumberedsubsec">tracedp</h4> +<a name="index-tracedp"></a> +<a name="index-traced_003f"></a> + +<div class="example"> +<pre class="example">TRACEDP contentslist +TRACED? contentslist +</pre></div> + +<p>outputs <code>TRUE</code> if the first procedure, variable, or property list named in +the contents list is traced, <code>FALSE</code> 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 <code>TRACEDP [[] +[<var>variable</var>]]</code> or <code>TRACEDP [[] [] [<var>proplist</var>]]</code>. +</p> + +<hr> +<a name="STEP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#UNSTEP" accesskey="n" rel="next">UNSTEP</a>, Previous: <a href="usermanual.html#TRACEDP" accesskey="p" rel="prev">TRACEDP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="step"></a> +<h4 class="unnumberedsubsec">step</h4> +<a name="index-step"></a> + +<div class="example"> +<pre class="example">STEP contentslist +</pre></div> + +<p>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 <em>shadowed</em> because a local variable of the same name is +created either as a procedure input or by the <code>LOCAL</code> command. +</p> +<p>See <a href="usermanual.html#LOCAL">LOCAL</a> . +</p> +<hr> +<a name="UNSTEP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#STEPPEDP" accesskey="n" rel="next">STEPPEDP</a>, Previous: <a href="usermanual.html#STEP" accesskey="p" rel="prev">STEP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="unstep"></a> +<h4 class="unnumberedsubsec">unstep</h4> +<a name="index-unstep"></a> + +<div class="example"> +<pre class="example">UNSTEP contentslist +</pre></div> + +<p>command. Turns off stepping for the named items. +</p> + +<hr> +<a name="STEPPEDP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EDIT" accesskey="n" rel="next">EDIT</a>, Previous: <a href="usermanual.html#UNSTEP" accesskey="p" rel="prev">UNSTEP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="steppedp"></a> +<h4 class="unnumberedsubsec">steppedp</h4> +<a name="index-steppedp"></a> +<a name="index-stepped_003f"></a> + +<div class="example"> +<pre class="example">STEPPEDP contentslist +STEPPED? contentslist +</pre></div> + +<p>outputs <code>TRUE</code> if the first procedure, variable, or property list named in +the contents list is stepped, <code>FALSE</code> 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 <code>STEPPEDP [[] +[<var>variable</var>]]</code> or <code>STEPPEDP [[] [] [<var>proplist</var>]]</code>. +</p> + + +<hr> +<a name="EDIT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EDITFILE" accesskey="n" rel="next">EDITFILE</a>, Previous: <a href="usermanual.html#STEPPEDP" accesskey="p" rel="prev">STEPPEDP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="edit"></a> +<h4 class="unnumberedsubsec">edit</h4> +<a name="index-editor"></a> +<a name="index-temp"></a> +<a name="index-edit"></a> +<a name="index-ed"></a> + +<div class="example"> +<pre class="example">EDIT contentslist +ED contentslist +(EDIT) +(ED) +</pre></div> + +<p>command. If invoked with an input, <code>EDIT</code> 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 <code>EDITOR</code> environment variable. If you don’t have an +<code>EDITOR</code> variable, edits the definitions using <code>jove</code>. If invoked +without an input, <code>EDIT</code> edits the same file left over from a previous +<code>EDIT</code> or <code>EDITFILE</code> 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. +</p> +<p>If there is a variable <code>LOADNOISILY</code> whose value is <code>TRUE</code>, then, +after leaving the editor, <code>TO</code> commands in the temporary file print +‘<samp><var>procname</var> defined</samp>’ (where <var>procname</var> is the name of the +procedure being defined); if <code>LOADNOISILY</code> is <code>FALSE</code> or undefined, +<code>TO</code> commands in the file are carried out silently. +</p> +<p>If there is an environment variable called <code>TEMP</code>, then Logo uses its +value as the directory in which to write the temporary file used for +editing. +</p> +<p>Exceptionally, the <code>EDIT</code> command can be used without its default input +and without parentheses provided that nothing follows it on the +instruction line. +</p> +<p>See <a href="usermanual.html#LOADNOISILY">LOADNOISILY</a> , +See <a href="usermanual.html#EDITFILE">EDITFILE</a> . +</p> +<hr> +<a name="EDITFILE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EDALL" accesskey="n" rel="next">EDALL</a>, Previous: <a href="usermanual.html#EDIT" accesskey="p" rel="prev">EDIT</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="editfile"></a> +<h4 class="unnumberedsubsec">editfile</h4> +<a name="index-editfile"></a> + +<div class="example"> +<pre class="example">EDITFILE filename +</pre></div> + +<p>command. Starts the Logo editor, like <code>EDIT</code>, 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 <code>EDIT</code>. <code>EDITFILE</code> also +remembers the filename, so that a subsequent <code>EDIT</code> command with no input will +re-edit the same file. +</p> +<p><code>EDITFILE</code> is intended as an alternative to <code>LOAD</code> and <code>SAVE</code>. +You can maintain a workspace file yourself, controlling the order in which +definitions appear, maintaining comments in the file, and so on. +</p> +<p>In the wxWidgets version, <code>EDITFILE</code> asks whether or not you want to +load the file into Logo when you finish editing. This allows you to use +<code>EDITFILE</code> to edit data files without leaving Logo. +</p> + +<hr> +<a name="EDALL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EDPS" accesskey="n" rel="next">EDPS</a>, Previous: <a href="usermanual.html#EDITFILE" accesskey="p" rel="prev">EDITFILE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="edall"></a> +<h4 class="unnumberedsubsec">edall</h4> +<a name="index-edall"></a> + +<div class="example"> +<pre class="example">EDALL (library procedure) +</pre></div> + +<p>command. Abbreviates <tt>EDIT CONTENTS</tt>. +</p> +<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> . +</p> +<hr> +<a name="EDPS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EDNS" accesskey="n" rel="next">EDNS</a>, Previous: <a href="usermanual.html#EDALL" accesskey="p" rel="prev">EDALL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="edps"></a> +<h4 class="unnumberedsubsec">edps</h4> +<a name="index-edps"></a> + +<div class="example"> +<pre class="example">EDPS (library procedure) +</pre></div> + +<p>command. Abbreviates <tt>EDIT PROCEDURES</tt>. +</p> +<p>See <a href="usermanual.html#EDIT">EDIT</a> , +<a href="usermanual.html#PROCEDURES">PROCEDURES</a> . +</p> +<hr> +<a name="EDNS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EDPLS" accesskey="n" rel="next">EDPLS</a>, Previous: <a href="usermanual.html#EDPS" accesskey="p" rel="prev">EDPS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="edns"></a> +<h4 class="unnumberedsubsec">edns</h4> +<a name="index-edns"></a> + +<div class="example"> +<pre class="example">EDNS (library procedure) +</pre></div> + +<p>command. Abbreviates <tt>EDIT NAMES</tt>. +</p> +<p>See <a href="usermanual.html#EDIT">EDIT</a> , +<a href="usermanual.html#NAMES">NAMES</a> . +</p> +<hr> +<a name="EDPLS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EDN" accesskey="n" rel="next">EDN</a>, Previous: <a href="usermanual.html#EDNS" accesskey="p" rel="prev">EDNS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="edpls"></a> +<h4 class="unnumberedsubsec">edpls</h4> +<a name="index-edpls"></a> + +<div class="example"> +<pre class="example">EDPLS (library procedure) +</pre></div> + +<p>command. Abbreviates <tt>EDIT PLISTS</tt>. +</p> +<p>See <a href="usermanual.html#EDIT">EDIT</a> , +<a href="usermanual.html#PLISTS">PLISTS</a> . +</p> +<hr> +<a name="EDN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#EDPL" accesskey="n" rel="next">EDPL</a>, Previous: <a href="usermanual.html#EDPLS" accesskey="p" rel="prev">EDPLS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="edn"></a> +<h4 class="unnumberedsubsec">edn</h4> +<a name="index-edn"></a> + +<div class="example"> +<pre class="example">EDN varname (library procedure) +EDN varnamelist +</pre></div> + +<p>command. Abbreviates <tt>EDIT NAMELIST <var>varname(list)</var></tt>. +</p> +<p>See <a href="usermanual.html#EDIT">EDIT</a> , +<a href="usermanual.html#NAMELIST">NAMELIST</a> . +</p> +<hr> +<a name="EDPL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SAVE" accesskey="n" rel="next">SAVE</a>, Previous: <a href="usermanual.html#EDN" accesskey="p" rel="prev">EDN</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="edpl"></a> +<h4 class="unnumberedsubsec">edpl</h4> +<a name="index-edpl"></a> + +<div class="example"> +<pre class="example">EDPL plname (library procedure) +EDPL plnamelist +</pre></div> + +<p>command. Abbreviates <tt>EDIT PLLIST <var>plname(list)</var></tt>. +</p> +<p>See <a href="usermanual.html#EDIT">EDIT</a> , +<a href="usermanual.html#PLLIST">PLLIST</a> . +</p> +<hr> +<a name="SAVE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SAVEL" accesskey="n" rel="next">SAVEL</a>, Previous: <a href="usermanual.html#EDPL" accesskey="p" rel="prev">EDPL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="save"></a> +<h4 class="unnumberedsubsec">save</h4> +<a name="index-save"></a> + +<div class="example"> +<pre class="example">SAVE filename +</pre></div> + +<p>command. Saves the definitions of all unburied procedures, variables, +and nonempty property lists in the named file. Equivalent to +</p> +<div class="example"> +<pre class="example">to save :filename +local "oldwriter +make "oldwriter writer +openwrite :filename +setwrite :filename +poall +setwrite :oldwriter +close :filename +end +</pre></div> + +<p>Exceptionally, <code>SAVE</code> 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 <code>LOAD</code> or <code>SAVE</code> command will be used. (It +is an error if there has been no previous <code>LOAD</code> or <code>SAVE</code>.) +</p> +<hr> +<a name="SAVEL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOAD" accesskey="n" rel="next">LOAD</a>, Previous: <a href="usermanual.html#SAVE" accesskey="p" rel="prev">SAVE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="savel"></a> +<h4 class="unnumberedsubsec">savel</h4> +<a name="index-savel"></a> + +<div class="example"> +<pre class="example">SAVEL contentslist filename (library procedure) +</pre></div> + +<p>command. Saves the definitions of the procedures, variables, and +property lists specified by <var>contentslist</var> to the file named <var>filename</var>. +</p> +<hr> +<a name="LOAD"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CSLSLOAD" accesskey="n" rel="next">CSLSLOAD</a>, Previous: <a href="usermanual.html#SAVEL" accesskey="p" rel="prev">SAVEL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="load"></a> +<h4 class="unnumberedsubsec">load</h4> +<a name="index-load"></a> + +<div class="example"> +<pre class="example">LOAD filename +</pre></div> + +<p>command. Reads instructions from the named file and executes them. The file +can include procedure definitions with <code>TO</code>, 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 <code>STARTUP</code>, then that list is run as an +instructionlist after the file is loaded. If there is a variable +<code>LOADNOISILY</code> whose value is <code>TRUE</code>, then <code>TO</code> commands in the +file print ‘<samp><var>procname</var> defined</samp>’ (where <var>procname</var> is the name of +the procedure being defined); if <code>LOADNOISILY</code> is <code>FALSE</code> or +undefined, <code>TO</code> commands in the file are carried out silently. +</p> +<p>See <a href="usermanual.html#STARTUP">STARTUP</a> , +See <a href="usermanual.html#LOADNOISILY">LOADNOISILY</a> . +</p> + +<hr> +<a name="CSLSLOAD"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#HELP" accesskey="n" rel="next">HELP</a>, Previous: <a href="usermanual.html#LOAD" accesskey="p" rel="prev">LOAD</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="cslsload"></a> +<h4 class="unnumberedsubsec">cslsload</h4> +<a name="index-cslsload"></a> + +<div class="example"> +<pre class="example">CSLSLOAD name +</pre></div> + +<p>command. Loads the named file, like <code>LOAD</code>, but from the directory +containing the Computer Science Logo Style programs instead of the +current user’s directory. +</p> +<p>See <a href="usermanual.html#LOAD">LOAD</a> . +</p> +<hr> +<a name="HELP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETEDITOR" accesskey="n" rel="next">SETEDITOR</a>, Previous: <a href="usermanual.html#CSLSLOAD" accesskey="p" rel="prev">CSLSLOAD</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="help"></a> +<h4 class="unnumberedsubsec">help</h4> +<a name="index-logohelp"></a> +<a name="index-help"></a> + +<div class="example"> +<pre class="example">HELP name +(HELP) +</pre></div> + +<p>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 <code>LOGOHELP</code>, then its value is taken as the directory in which to +look for help files, instead of the default help directory. +</p> +<p>If <code>HELP</code> 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. +</p> +<p>Exceptionally, the <code>HELP</code> command can be used without its default input +and without parentheses provided that nothing follows it on the +instruction line. +</p> +<hr> +<a name="SETEDITOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETLIBLOC" accesskey="n" rel="next">SETLIBLOC</a>, Previous: <a href="usermanual.html#HELP" accesskey="p" rel="prev">HELP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="seteditor"></a> +<h4 class="unnumberedsubsec">seteditor</h4> +<a name="index-seteditor"></a> + +<div class="example"> +<pre class="example">SETEDITOR path +</pre></div> + +<p>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. +</p> +<hr> +<a name="SETLIBLOC"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETCSLSLOC" accesskey="n" rel="next">SETCSLSLOC</a>, Previous: <a href="usermanual.html#SETEDITOR" accesskey="p" rel="prev">SETEDITOR</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setlibloc"></a> +<h4 class="unnumberedsubsec">setlibloc</h4> +<a name="index-setlibloc"></a> + +<div class="example"> +<pre class="example">SETLIBLOC path +</pre></div> + +<p>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 your operating system. +</p> +<hr> +<a name="SETCSLSLOC"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETHELPLOC" accesskey="n" rel="next">SETHELPLOC</a>, Previous: <a href="usermanual.html#SETLIBLOC" accesskey="p" rel="prev">SETLIBLOC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="setcslsloc"></a> +<h4 class="unnumberedsubsec">setcslsloc</h4> +<a name="index-setcslsloc"></a> + +<div class="example"> +<pre class="example">SETCSLSLOC path +</pre></div> + +<p>command. Tells Logo to use the specified directory for the <code>CSLSLOAD</code> +command, instead of the default directory. The format of a path +depends on your operating system. +</p> +<p>See <a href="usermanual.html#CSLSLOAD">CSLSLOAD</a> . +</p> +<hr> +<a name="SETHELPLOC"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SETTEMPLOC" accesskey="n" rel="next">SETTEMPLOC</a>, Previous: <a href="usermanual.html#SETCSLSLOC" accesskey="p" rel="prev">SETCSLSLOC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="sethelploc"></a> +<h4 class="unnumberedsubsec">sethelploc</h4> +<a name="index-sethelploc"></a> + +<div class="example"> +<pre class="example">SETHELPLOC path +</pre></div> + +<p>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. +</p> +<hr> +<a name="SETTEMPLOC"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GC" accesskey="n" rel="next">GC</a>, Previous: <a href="usermanual.html#SETHELPLOC" accesskey="p" rel="prev">SETHELPLOC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="settemploc"></a> +<h4 class="unnumberedsubsec">settemploc</h4> +<a name="index-settemploc"></a> + +<div class="example"> +<pre class="example">SETTEMPLOC path +</pre></div> + +<p>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. +</p> +<hr> +<a name="GC"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#g_t_002eSETSEGMENTSIZE" accesskey="n" rel="next">.SETSEGMENTSIZE</a>, Previous: <a href="usermanual.html#SETTEMPLOC" accesskey="p" rel="prev">SETTEMPLOC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="gc"></a> +<h4 class="unnumberedsubsec">gc</h4> +<a name="index-gc"></a> + +<div class="example"> +<pre class="example">GC +(GC anything) +</pre></div> + +<p>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 <code>NODES</code> operation will not be very meaningful unless garbage has been +collected. Another reason to use <code>GC</code> 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), <code>GC</code> runs a full garbage +collection, including <acronym>GCTWA</acronym> (Garbage Collect Truly Worthless Atoms, +which means that it removes from Logo’s memory words that used to be +procedure or variable names but aren’t any more); without an argument, +<code>GC</code> does a generational garbage collection, which means that only +recently created nodes are examined. (The latter is usually good +enough.) +</p> + +<hr> +<a name="g_t_002eSETSEGMENTSIZE"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#GC" accesskey="p" rel="prev">GC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_002esetsegmentsize"></a> +<h4 class="unnumberedsubsec">.setsegmentsize</h4> +<a name="index-_002esetsegmentsize"></a> + +<div class="example"> +<pre class="example">.SETSEGMENTSIZE num +</pre></div> + +<p>command. Sets the number of nodes that Logo allocates from the +operating system at once to <var>num</var>, 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. +</p> + +<hr> +<a name="CONTROL-STRUCTURES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MACROS" accesskey="n" rel="next">MACROS</a>, Previous: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="p" rel="prev">WORKSPACE MANAGEMENT</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Control-Structures"></a> +<h2 class="chapter">9 Control Structures</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#CONTROL" accesskey="1">CONTROL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="2">TEMPLATE-BASED ITERATION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + + +<hr> +<a name="CONTROL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="n" rel="next">TEMPLATE-BASED ITERATION</a>, Previous: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="p" rel="prev">CONTROL STRUCTURES</a>, Up: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="u" rel="up">CONTROL STRUCTURES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Control"></a> +<h3 class="section">9.1 Control</h3> + +<p>Note: in the following descriptions, an <em>instructionlist</em> can be a list or +a word. In the latter case, the word is parsed into list form before it is +run. Thus, <tt>RUN READWORD</tt><!-- /@w --> or <tt>RUN READLIST</tt><!-- /@w --> will work. The +former is slightly preferable because it allows for a continued line (with <code>~</code>) +that includes a comment (with <code>;</code>) on the first line. +</p> +<p>A <var>tf</var> input must be the word <code>TRUE</code>, the word <code>FALSE</code>, 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 <code>TRUE</code> or <code>FALSE</code>. The comparisons with <code>TRUE</code> and <code>FALSE</code> +are always case-insensitive. +</p> +<p>A runlist can consist of either a single expression (that produces a value) +or zero or more instructions (that do something, rather than output a value), +depending on the context: +</p> +<div class="example"> +<pre class="example">PRINT IFELSE :X<0 ["NEGATIVE] ["POSITIVE] ; one value in each case +REPEAT 4 [PRINT "A PRINT "B] ; two instructions +</pre></div> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#RUN" accesskey="1">RUN</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#RUNRESULT" accesskey="2">RUNRESULT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REPEAT" accesskey="3">REPEAT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FOREVER" accesskey="4">FOREVER</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REPCOUNT" accesskey="5">REPCOUNT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#IF" accesskey="6">IF</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#IFELSE" accesskey="7">IFELSE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TEST" accesskey="8">TEST</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#IFTRUE" accesskey="9">IFTRUE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#IFFALSE">IFFALSE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#STOP">STOP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#OUTPUT">OUTPUT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CATCH">CATCH</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#THROW">THROW</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERROR">ERROR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PAUSE">PAUSE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CONTINUE">CONTINUE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WAIT">WAIT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BYE">BYE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#dMAYBEOUTPUT">dMAYBEOUTPUT</a>:</td><td> </td><td align="left" valign="top">MAYBEOUTPUT +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#GOTO">GOTO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TAG">TAG</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#IGNORE">IGNORE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#back_002dquote">back-quote</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FOR">FOR</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#DOdWHILE">DOdWHILE</a>:</td><td> </td><td align="left" valign="top">DO.WHILE +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#WHILE">WHILE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#DOdUNTIL">DOdUNTIL</a>:</td><td> </td><td align="left" valign="top">DO.UNTIL +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UNTIL">UNTIL</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CASE">CASE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#COND">COND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="RUN"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#RUNRESULT" accesskey="n" rel="next">RUNRESULT</a>, Previous: <a href="usermanual.html#CONTROL" accesskey="p" rel="prev">CONTROL</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="run"></a> +<h4 class="unnumberedsubsec">run</h4> +<a name="index-run"></a> + +<div class="example"> +<pre class="example">RUN instructionlist +</pre></div> + +<p>command or operation. Runs the Logo instructions in the input list; +outputs if the list contains an expression that outputs. +</p> +<p>See <a href="usermanual.html#READWORD">READWORD</a> , +<a href="usermanual.html#READLIST">READLIST</a> . +</p> +<hr> +<a name="RUNRESULT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REPEAT" accesskey="n" rel="next">REPEAT</a>, Previous: <a href="usermanual.html#RUN" accesskey="p" rel="prev">RUN</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="runresult"></a> +<h4 class="unnumberedsubsec">runresult</h4> +<a name="index-runresult"></a> + +<div class="example"> +<pre class="example">RUNRESULT instructionlist +</pre></div> + +<p>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: +</p> +<div class="example"> +<pre class="example">local "result +make "result runresult [something] +if emptyp :result [stop] +output first :result +</pre></div> + +<hr> +<a name="REPEAT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FOREVER" accesskey="n" rel="next">FOREVER</a>, Previous: <a href="usermanual.html#RUNRESULT" accesskey="p" rel="prev">RUNRESULT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="repeat"></a> +<h4 class="unnumberedsubsec">repeat</h4> +<a name="index-repeat"></a> + +<div class="example"> +<pre class="example">REPEAT num instructionlist +</pre></div> + +<p>command. Runs the <var>instructionlist</var> repeatedly, <var>num</var> times. +</p> +<hr> +<a name="FOREVER"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REPCOUNT" accesskey="n" rel="next">REPCOUNT</a>, Previous: <a href="usermanual.html#REPEAT" accesskey="p" rel="prev">REPEAT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="forever"></a> +<h4 class="unnumberedsubsec">forever</h4> +<a name="index-forever"></a> + +<div class="example"> +<pre class="example">FOREVER instructionlist +</pre></div> + +<p>command. Runs the "instructionlist" repeatedly, until something inside +the instructionlist (such as <code>STOP</code> or <code>THROW</code>) makes it stop. +</p> +<p>See <a href="usermanual.html#STOP">STOP</a> , +See <a href="usermanual.html#THROW">THROW</a> . +</p> + +<hr> +<a name="REPCOUNT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#IF" accesskey="n" rel="next">IF</a>, Previous: <a href="usermanual.html#FOREVER" accesskey="p" rel="prev">FOREVER</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="repcount"></a> +<h4 class="unnumberedsubsec">repcount</h4> +<a name="index-repcount"></a> + +<div class="example"> +<pre class="example">REPCOUNT +</pre></div> + +<p>outputs the repetition count of the innermost current <code>REPEAT</code> or +<code>FOREVER</code>, starting from 1. If no <code>REPEAT</code> or <code>FOREVER</code> +is active, outputs –1. +</p> +<p>The abbreviation <code>#</code> can be used for <code>REPCOUNT</code> unless the +<code>REPEAT</code> is inside the template input to a higher order procedure +such as <code>FOREACH</code>, in which case <code>#</code> has a different meaning. +</p> +<hr> +<a name="IF"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#IFELSE" accesskey="n" rel="next">IFELSE</a>, Previous: <a href="usermanual.html#REPCOUNT" accesskey="p" rel="prev">REPCOUNT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="if"></a> +<h4 class="unnumberedsubsec">if</h4> +<a name="index-if"></a> + +<div class="example"> +<pre class="example">IF tf instructionlist +(IF tf instructionlist1 instructionlist2) +</pre></div> + +<p>command. If the first input has the value <code>TRUE</code>, then <code>IF</code> runs the second +input. If the first input has the value <code>FALSE</code>, then <code>IF</code> does nothing. +(If given a third input, IF acts like <code>IFELSE</code>, as described below.) It +is an error if the first input is not either <code>TRUE</code> or <code>FALSE</code>. +</p> +<p>For compatibility with earlier versions of Logo, if an <code>IF</code> 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 <code>IF</code> is treated as if it were <code>IFELSE</code>, but a warning +message is given. If this aberrant <code>IF</code> appears in a procedure body, the +warning is given only the first time the procedure is invoked in each +Logo session. +</p> +<hr> +<a name="IFELSE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TEST" accesskey="n" rel="next">TEST</a>, Previous: <a href="usermanual.html#IF" accesskey="p" rel="prev">IF</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="ifelse"></a> +<h4 class="unnumberedsubsec">ifelse</h4> +<a name="index-ifelse"></a> + +<div class="example"> +<pre class="example">IFELSE tf instructionlist1 instructionlist2 +</pre></div> + +<p>command or operation. If the first input has the value <code>TRUE</code>, then +<code>IFELSE</code> runs the second input. If the first input has the value <code>FALSE</code>, +then <code>IFELSE</code> runs the third input. <code>IFELSE</code> outputs a value if the +<var>instructionlist</var> contains an expression that outputs a value. +</p> +<hr> +<a name="TEST"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#IFTRUE" accesskey="n" rel="next">IFTRUE</a>, Previous: <a href="usermanual.html#IFELSE" accesskey="p" rel="prev">IFELSE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="test"></a> +<h4 class="unnumberedsubsec">test</h4> +<a name="index-test"></a> + +<div class="example"> +<pre class="example">TEST tf +</pre></div> + +<p>command. Remembers its input, which must be <code>TRUE</code> or <code>FALSE</code>, for +use by later <code>IFTRUE</code> or <code>IFFALSE</code> instructions. The effect of +<code>TEST</code> is local to the procedure in which it is used; any corresponding +<code>IFTRUE</code> or <code>IFFALSE</code> must be in the same procedure or a subprocedure. +</p> +<p>See <a href="usermanual.html#IFFALSE">IFFALSE</a> . +</p> +<hr> +<a name="IFTRUE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#IFFALSE" accesskey="n" rel="next">IFFALSE</a>, Previous: <a href="usermanual.html#TEST" accesskey="p" rel="prev">TEST</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="iftrue"></a> +<h4 class="unnumberedsubsec">iftrue</h4> +<a name="index-iftrue"></a> +<a name="index-ift"></a> + +<div class="example"> +<pre class="example">IFTRUE instructionlist +IFT instructionlist +</pre></div> + +<p>command. Runs its input if the most recent <code>TEST</code> instruction had a <code>TRUE</code> +input. The <code>TEST</code> must have been in the same procedure or a +superprocedure. +</p> +<hr> +<a name="IFFALSE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#STOP" accesskey="n" rel="next">STOP</a>, Previous: <a href="usermanual.html#IFTRUE" accesskey="p" rel="prev">IFTRUE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="iffalse"></a> +<h4 class="unnumberedsubsec">iffalse</h4> +<a name="index-iffalse"></a> +<a name="index-iff"></a> + +<div class="example"> +<pre class="example">IFFALSE instructionlist +IFF instructionlist +</pre></div> + +<p>command. Runs its input if the most recent <code>TEST</code> instruction had a <code>FALSE</code> +input. The <code>TEST</code> must have been in the same procedure or a +superprocedure. +</p> +<p>See <a href="usermanual.html#TEST">TEST</a> . +</p> +<hr> +<a name="STOP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#OUTPUT" accesskey="n" rel="next">OUTPUT</a>, Previous: <a href="usermanual.html#IFFALSE" accesskey="p" rel="prev">IFFALSE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="stop"></a> +<h4 class="unnumberedsubsec">stop</h4> +<a name="index-stop"></a> + +<div class="example"> +<pre class="example">STOP +</pre></div> + +<p>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. +</p> +<hr> +<a name="OUTPUT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CATCH" accesskey="n" rel="next">CATCH</a>, Previous: <a href="usermanual.html#STOP" accesskey="p" rel="prev">STOP</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="output"></a> +<h4 class="unnumberedsubsec">output</h4> +<a name="index-output"></a> +<a name="index-op"></a> + +<div class="example"> +<pre class="example">OUTPUT value +OP value +</pre></div> + +<p>command. Ends the running of the procedure in which it appears. That +procedure outputs the value <var>value</var> to the context in which it was +invoked. Don’t be confused: <code>OUTPUT</code> itself is a command, but the +procedure that invokes <code>OUTPUT</code> is an operation. +</p> +<hr> +<a name="CATCH"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#THROW" accesskey="n" rel="next">THROW</a>, Previous: <a href="usermanual.html#OUTPUT" accesskey="p" rel="prev">OUTPUT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="catch"></a> +<h4 class="unnumberedsubsec">catch</h4> +<a name="index-catch"></a> + +<div class="example"> +<pre class="example">CATCH tag instructionlist +</pre></div> + +<p>command or operation. Runs its second input. Outputs if that +<var>instructionlist</var> outputs. If, while running the instructionlist, a +<code>THROW</code> instruction is executed with a tag equal to the first input +(case-insensitive comparison), then the running of the <var>instructionlist</var> is +terminated immediately. In this case the <code>CATCH</code> outputs if a value input is +given to <code>THROW</code>. The <var>tag</var> must be a word. +</p> +<p>If the tag is the word <code>ERROR</code>, then any error condition that arises +during the running of the instructionlist has the effect of <tt>THROW "ERROR</tt><!-- /@w --> +instead of printing an error message and returning to toplevel. The +<code>CATCH</code> does not output if an error is caught. Also, during the running +of the instructionlist, the variable <code>ERRACT</code> is temporarily unbound. (If +there is an error while <code>ERRACT</code> has a value, that value is taken as an +instructionlist to be run after printing the error message. Typically +the value of <code>ERRACT</code>, if any, is the list <code>[PAUSE]</code>.) +</p> +<p>See <a href="usermanual.html#ERROR">ERROR</a> , +<a href="usermanual.html#ERRACT">ERRACT</a> , +<a href="usermanual.html#PAUSE">PAUSE</a> . +</p> +<hr> +<a name="THROW"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERROR" accesskey="n" rel="next">ERROR</a>, Previous: <a href="usermanual.html#CATCH" accesskey="p" rel="prev">CATCH</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="throw"></a> +<h4 class="unnumberedsubsec">throw</h4> +<a name="index-throw"></a> + +<div class="example"> +<pre class="example">THROW tag +(THROW tag value) +</pre></div> + +<p>command. Must be used within the scope of a <code>CATCH</code> with an equal tag. +Ends the running of the instructionlist of the <code>CATCH</code>. If <code>THROW</code> is used +with only one input, the corresponding <code>CATCH</code> does not output a value. +If <code>THROW</code> is used with two inputs, the second provides an output for the +<code>CATCH</code>. +</p> +<p><tt>THROW "TOPLEVEL</tt><!-- /@w --> can be used to terminate all running procedures and +interactive pauses, and return to the toplevel instruction prompt. Typing the +system interrupt character (<tt class="key">alt-S</tt> for wxWidgets; otherwise normally +<tt class="key">control-C</tt> for Unix, <tt class="key">control-Q</tt> for DOS, or <tt class="key">command-period</tt> for +Mac) has the same effect. +</p> +<p><tt>THROW "ERROR</tt><!-- /@w --> can be used to generate an error condition. If the error +is not caught, it prints a message (<code>THROW "ERROR</code><!-- /@w -->) with the usual +indication of where the error (in this case the <code>THROW</code>) occurred. If a +second input is used along with a tag of <code>ERROR</code>, 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 error will be, not +the location of the <code>THROW</code>, but the location where the procedure +containing the <code>THROW</code> was invoked. This allows user-defined procedures +to generate error messages as if they were primitives. Note: in this +case the corresponding <tt>CATCH "ERROR</tt><!-- /@w -->, if any, does not output, since the +second input to <code>THROW</code> is not considered a return value. +</p> +<p><tt>THROW "SYSTEM</tt><!-- /@w --> immediately leaves Logo, returning to the operating +system, without printing the usual parting message and without deleting +any editor temporary file written by EDIT. +</p> + +<hr> +<a name="ERROR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PAUSE" accesskey="n" rel="next">PAUSE</a>, Previous: <a href="usermanual.html#THROW" accesskey="p" rel="prev">THROW</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="error"></a> +<h4 class="unnumberedsubsec">error</h4> +<a name="index-error"></a> + +<div class="example"> +<pre class="example">ERROR +</pre></div> + +<p>outputs a list describing the error just caught, if any. If there was not an +error caught since the last use of <code>ERROR</code>, 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. +</p> +<hr> +<a name="PAUSE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CONTINUE" accesskey="n" rel="next">CONTINUE</a>, Previous: <a href="usermanual.html#ERROR" accesskey="p" rel="prev">ERROR</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="pause"></a> +<h4 class="unnumberedsubsec">pause</h4> +<a name="index-pause"></a> + +<div class="example"> +<pre class="example">PAUSE +</pre></div> + +<p>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 <code>PAUSE</code> was invoked. Local +variables of that procedure are available during the pause. <code>PAUSE</code> +outputs if the pause is ended by a <code>CONTINUE</code> with an input. +</p> +<p>If the variable <code>ERRACT</code> exists, and an error condition occurs, the +contents of that variable are run as an instructionlist. Typically +<code>ERRACT</code> is given the value <code>[PAUSE]</code> 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. +</p> +<p>Typing the system quit character (<tt class="key">alt-S</tt> for wxWidgets; otherwise +normally <tt class="key">control-\</tt> for Unix, <tt class="key">control-W</tt> for DOS, or +<tt class="key">command-comma</tt> for Mac) will also enter a pause. +</p> +<p>See <a href="usermanual.html#ERRACT">ERRACT</a> . +</p> +<hr> +<a name="CONTINUE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WAIT" accesskey="n" rel="next">WAIT</a>, Previous: <a href="usermanual.html#PAUSE" accesskey="p" rel="prev">PAUSE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="continue"></a> +<h4 class="unnumberedsubsec">continue</h4> +<a name="index-continue"></a> +<a name="index-co"></a> + +<div class="example"> +<pre class="example">CONTINUE value +CO value +(CONTINUE) +(CO) +</pre></div> + +<p>command. Ends the current interactive pause, returning to the context +of the <code>PAUSE</code> invocation that began it. If <code>CONTINUE</code> is given an input, +that value is used as the output from the <code>PAUSE</code>. If not, the <code>PAUSE</code> does +not output. +</p> +<p>Exceptionally, the <code>CONTINUE</code> command can be used without its default +input and without parentheses provided that nothing follows it on the +instruction line. +</p> +<hr> +<a name="WAIT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BYE" accesskey="n" rel="next">BYE</a>, Previous: <a href="usermanual.html#CONTINUE" accesskey="p" rel="prev">CONTINUE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="wait"></a> +<h4 class="unnumberedsubsec">wait</h4> +<a name="index-wait"></a> + +<div class="example"> +<pre class="example">WAIT time +</pre></div> + +<p>command. Delays further execution for <var>time</var> 60ths of a second. Also +causes any buffered characters destined for the terminal to be printed +immediately. <tt>WAIT 0</tt><!-- /@w --> can be used to achieve this buffer flushing without actually waiting. +</p> +<hr> +<a name="BYE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#dMAYBEOUTPUT" accesskey="n" rel="next">dMAYBEOUTPUT</a>, Previous: <a href="usermanual.html#WAIT" accesskey="p" rel="prev">WAIT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="bye"></a> +<h4 class="unnumberedsubsec">bye</h4> +<a name="index-bye"></a> + +<div class="example"> +<pre class="example">BYE +</pre></div> + +<p>command. Exits from Logo; returns to the operating system. +</p> +<hr> +<a name="dMAYBEOUTPUT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#GOTO" accesskey="n" rel="next">GOTO</a>, Previous: <a href="usermanual.html#BYE" accesskey="p" rel="prev">BYE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_002emaybeoutput"></a> +<h4 class="unnumberedsubsec">.maybeoutput</h4> +<a name="index-_002emaybeoutput"></a> + +<div class="example"> +<pre class="example">.MAYBEOUTPUT value (special form) +</pre></div> + +<p>works like <code>OUTPUT</code> except that the expression that provides the input +value might not, in fact, output a value, in which case the effect is +like <code>STOP</code>. This is intended for use in control structure definitions, +for cases in which you don’t know whether or not some expression +produces a value. Example: +</p> +<div class="example"> +<pre class="example">to invoke :function [:inputs] 2 +.maybeoutput apply :function :inputs +end + +? (invoke "print "a "b "c) +a b c +? print (invoke "word "a "b "c) +abc +</pre></div> + +<p>This is an alternative to <code>RUNRESULT</code>. 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.) +</p> +<p>See <a href="usermanual.html#OUTPUT">OUTPUT</a> , +<a href="usermanual.html#STOP">STOP</a> , +<a href="usermanual.html#RUNRESULT">RUNRESULT</a> . +</p> +<hr> +<a name="GOTO"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TAG" accesskey="n" rel="next">TAG</a>, Previous: <a href="usermanual.html#dMAYBEOUTPUT" accesskey="p" rel="prev">dMAYBEOUTPUT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="goto"></a> +<h4 class="unnumberedsubsec">goto</h4> +<a name="index-goto"></a> + +<div class="example"> +<pre class="example">GOTO word +</pre></div> + +<p>command. Looks for a <code>TAG</code> command with the same input in the same +procedure, and continues running the procedure from the location of that +<code>TAG</code>. It is meaningless to use <code>GOTO</code> outside of a procedure. +</p> +<hr> +<a name="TAG"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#IGNORE" accesskey="n" rel="next">IGNORE</a>, Previous: <a href="usermanual.html#GOTO" accesskey="p" rel="prev">GOTO</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="tag"></a> +<h4 class="unnumberedsubsec">tag</h4> +<a name="index-tag"></a> + +<div class="example"> +<pre class="example">TAG quoted.word +</pre></div> + +<p>command. Does nothing. The input must be a literal word following a +quotation mark (<code>"</code>), not the result of a computation. Tags are used by +the <code>GOTO</code> command. +</p> +<hr> +<a name="IGNORE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#back_002dquote" accesskey="n" rel="next">back-quote</a>, Previous: <a href="usermanual.html#TAG" accesskey="p" rel="prev">TAG</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="ignore"></a> +<h4 class="unnumberedsubsec">ignore</h4> +<a name="index-ignore"></a> + +<div class="example"> +<pre class="example">IGNORE value (library procedure) +</pre></div> + +<p>command. Does nothing. Used when an expression is evaluated for a side +effect and its actual value is unimportant. +</p> +<hr> +<a name="back_002dquote"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FOR" accesskey="n" rel="next">FOR</a>, Previous: <a href="usermanual.html#IGNORE" accesskey="p" rel="prev">IGNORE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_0060"></a> +<h4 class="unnumberedsubsec">‘</h4> +<a name="index-_0060"></a> + +<div class="example"> +<pre class="example">` list (library procedure) +</pre></div> + +<p>outputs a list equal to its input but with certain substitutions. If a +member of the input list is the word ‘<samp>,</samp>’ (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 ‘<samp>,@</samp>’ (comma atsign) then the +following member should be an instructionlist that outputs a list when +run. The members of that list replace the ‘<samp>,@</samp>’ and the instructionlist. +Example: +</p> +<div class="example"> +<pre class="example">show `[foo baz ,[bf [a b c]] garply ,@[bf [a b c]]] +</pre></div> + +<p>will print +</p> +<div class="example"> +<pre class="example">[foo baz [b c] garply b c] +</pre></div> + +<p>A word starting with ‘<samp>,</samp>’ or ‘<samp>,@</samp>’ is treated as if the rest of the +word were a one-word list, e.g., ‘<samp>,:foo</samp>’ is equivalent to ‘<samp>,[:Foo]</samp>’. +</p> +<p>A word starting with ‘<samp>",</samp>’ (quote comma) or ‘<samp>:,</samp>’ (colon comma) +becomes a word starting with ‘<samp>"</samp>’ or ‘<samp>:</samp>’ but with the result of +running the substitution (or its first word, if the result is a list) +replacing what comes after the comma. +</p> +<p>Backquotes can be nested. Substitution is done only for commas at +the same depth as the backquote in which they are found: +</p> +<div class="example"> +<pre class="example">? show `[a `[b ,[1+2] ,[foo ,[1+3] d] e] f] +[a ` [b , [1+2] , [foo 4 d] e] f] + +?make "name1 "x +?make "name2 "y +? show `[a `[b ,:,:name1 ,",:name2 d] e] +[a ` [b , [:x] , ["y] d] e] +</pre></div> + +<hr> +<a name="FOR"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#DOdWHILE" accesskey="n" rel="next">DOdWHILE</a>, Previous: <a href="usermanual.html#back_002dquote" accesskey="p" rel="prev">back-quote</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="for"></a> +<h4 class="unnumberedsubsec">for</h4> +<a name="index-for"></a> + +<div class="example"> +<pre class="example">FOR forcontrol instructionlist (library procedure) +</pre></div> + +<p>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 by <code>RUN</code> 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 evaluated 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. +</p> +<p>The second input is an instructionlist. The effect of <code>FOR</code> is to run +that instructionlist repeatedly, assigning a new value to the control +variable (the one named by the first member of the <var>forcontrol</var> list) each +time. First the starting value is assigned to the control variable. +Then the value is compared to the limit value. <code>FOR</code> is complete when the +sign of <code>(current - limit)</code> 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 <code>FOR</code>, e.g., +<tt>FOR [I 1 0 1] ...</tt>)<!-- /@w -->. 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. +</p> +<div class="example"> +<pre class="example">? for [i 2 7 1.5] [print :i] +2 +3.5 +5 +6.5 +? +</pre></div> + +<p>See <a href="usermanual.html#RUN">RUN</a> . +</p> +<hr> +<a name="DOdWHILE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#WHILE" accesskey="n" rel="next">WHILE</a>, Previous: <a href="usermanual.html#FOR" accesskey="p" rel="prev">FOR</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="do_002ewhile"></a> +<h4 class="unnumberedsubsec">do.while</h4> +<a name="index-do_002ewhile"></a> + +<div class="example"> +<pre class="example">DO.WHILE instructionlist tfexpression (library procedure) +</pre></div> + +<p>command. Repeatedly evaluates the <var>instructionlist</var> as long as the +evaluated +remains <code>TRUE</code>. Evaluates the first input first, +so the <var>instructionlist</var> is always run at least once. The +<var>tfexpression</var> must be an expressionlist whose value when evaluated is +<code>TRUE</code> or <code>FALSE</code>. +</p> +<hr> +<a name="WHILE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#DOdUNTIL" accesskey="n" rel="next">DOdUNTIL</a>, Previous: <a href="usermanual.html#DOdWHILE" accesskey="p" rel="prev">DOdWHILE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="while"></a> +<h4 class="unnumberedsubsec">while</h4> +<a name="index-while"></a> + +<div class="example"> +<pre class="example">WHILE tfexpression instructionlist (library procedure) +</pre></div> + +<p>command. Repeatedly evaluates the <var>instructionlist</var> as long as the +evaluated +remains <code>TRUE</code>. Evaluates the first input first, +so the <var>instructionlist</var> may never be run at all. The <var>tfexpression</var> +must be an expressionlist whose value when evaluated is <code>TRUE</code> or <code>FALSE</code>. +</p> +<hr> +<a name="DOdUNTIL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#UNTIL" accesskey="n" rel="next">UNTIL</a>, Previous: <a href="usermanual.html#WHILE" accesskey="p" rel="prev">WHILE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="do_002euntil"></a> +<h4 class="unnumberedsubsec">do.until</h4> +<a name="index-do_002euntil"></a> + +<div class="example"> +<pre class="example">DO.UNTIL instructionlist tfexpression (library procedure) +</pre></div> + +<p>command. Repeatedly evaluates the <var>instructionlist</var> as long as the +evaluated +remains <code>FALSE</code>. Evaluates the first input +first, so the <var>instructionlist</var> is always run at least once. The +<var>tfexpression</var> must be an expressionlist whose value when evaluated is +<code>TRUE</code> or <code>FALSE</code>. +</p> +<hr> +<a name="UNTIL"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CASE" accesskey="n" rel="next">CASE</a>, Previous: <a href="usermanual.html#DOdUNTIL" accesskey="p" rel="prev">DOdUNTIL</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="until"></a> +<h4 class="unnumberedsubsec">until</h4> +<a name="index-until"></a> + +<div class="example"> +<pre class="example">UNTIL tfexpression instructionlist (library procedure) +</pre></div> + +<p>command. Repeatedly evaluates the <var>instructionlist</var> as long as the +evaluated +remains <code>FALSE</code>. Evaluates the first input +first, so the <var>instructionlist</var> may never be run at all. The +<var>tfexpression</var> must be an expressionlist whose value when evaluated is +<code>TRUE</code> or <code>FALSE</code>. +</p> +<hr> +<a name="CASE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#COND" accesskey="n" rel="next">COND</a>, Previous: <a href="usermanual.html#UNTIL" accesskey="p" rel="prev">UNTIL</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="case"></a> +<h4 class="unnumberedsubsec">case</h4> +<a name="index-case"></a> + +<div class="example"> +<pre class="example">CASE value clauses (library procedure) +</pre></div> + +<p>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 <code>ELSE</code> and whose butfirst is a Logo expression or +instruction. <code>CASE</code> examines the clauses in order. If a clause begins +with the word <code>ELSE</code> (upper or lower case), then the butfirst of that +clause is evaluated and <code>CASE</code> 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 evaluated and <code>CASE</code> outputs its value, if +any. If neither of these conditions is met, then <code>CASE</code> goes on to the +next clause. If no clause is satisfied, <code>CASE</code> does nothing. +Example: +</p> +<div class="example"> +<pre class="example">to vowelp :letter +output case :letter [ [[a e i o u] "true] [else "false] ] +end +</pre></div> + +<hr> +<a name="COND"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#CASE" accesskey="p" rel="prev">CASE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="cond"></a> +<h4 class="unnumberedsubsec">cond</h4> +<a name="index-cond"></a> + +<div class="example"> +<pre class="example">COND clauses (library procedure) +</pre></div> + +<p>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 <code>TRUE</code> or <code>FALSE</code>, or the word <code>ELSE</code>, and whose butfirst is a Logo +expression or instruction. <code>COND</code> examines the clauses in order. If a +clause begins with the word <code>ELSE</code> (upper or lower case), then the +butfirst of that clause is evaluated and <code>CASE</code> outputs its value, if +any. Otherwise, the first element of the clause is evaluated; the +resulting value must be <code>TRUE</code> or <code>FALSE</code>. If it’s <code>TRUE</code>, then the +butfirst of that clause is evaluated and <code>COND</code> outputs its value, if +any. If the value is <code>FALSE</code>, then <code>COND</code> goes on to the next clause. If +no clause is satisfied, <code>COND</code> does nothing. Example: +</p> +<div class="example"> +<pre class="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 +</pre></div> + +<hr> +<a name="TEMPLATE_002dBASED-ITERATION"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#CONTROL" accesskey="p" rel="prev">CONTROL</a>, Up: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="u" rel="up">CONTROL STRUCTURES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Template_002dbased-Iteration"></a> +<h3 class="section">9.2 Template-based Iteration</h3> +<a name="index-template"></a> + +<p>The procedures in this section are iteration tools based on the idea of a +<em>template.</em> This is a generalization of an instruction list or an +expression list in which <em>slots</em> are provided for the tool to insert varying +data. Four different forms of template can be used. +</p> +<p>The most commonly used form for a template is ‘<samp>explicit-slot</samp>’ form, or +‘<samp>question mark</samp>’ form. Example: +</p> +<div class="example"> +<pre class="example">? show map [? * ?] [2 3 4 5] +[4 9 16 25] +? +</pre></div> + +<p>In this example, the <code>MAP</code> tool evaluated the template <code>[? * ?]</code><!-- /@w --> +repeatedly, with each of the members of the data list <code>[2 3 4 5]</code><!-- /@w --> +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 +<code>?1</code> for the first datum, <code>?2</code> for the second, and so on: +</p> +<div class="example"> +<pre class="example">? show (map [(word ?1 ?2 ?1)] [a b c] [d e f]) +[ada beb cfc] +? +</pre></div> + +<p>If the template wishes to compute the datum number, the form <code>(? 1)</code><!-- /@w --> is +equivalent to <code>?1</code>, so <code>(? ?1)</code><!-- /@w --> means the datum whose number is given in +datum number 1. Some tools allow additional slot designations, as shown +in the individual descriptions. +</p> +<p>The second form of template is the ‘<samp>named-procedure</samp>’ 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 <code>?1</code> through <code>?3</code> are +available, the template <code>"PROC</code> is equivalent to <tt>[PROC ?1 ?2 ?3]</tt><!-- /@w -->. +</p> +<div class="example"> +<pre class="example">? show (map "word [a b c] [d e f]) +[ad be cf] +? + +to dotprod :a :b ; vector dot product +op apply "sum (map "product :a :b) +end +</pre></div> + +<p>The third form of template is ‘<samp>named-slot</samp>’ or ‘<samp>lambda</samp>’ 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 <code>?</code> notation would be ambiguous in +the inner template. Example: +</p> +<div class="example"> +<pre class="example">to matmul :m1 :m2 [:tm2 transpose :m2] ; multiply two matrices +output map [[row] map [[col] dotprod :row :col] :tm2] :m1 +end +</pre></div> + +<p>The fourth form is ‘<samp>procedure text</samp>’ 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 <code>DEFINE</code> and <code>TEXT</code> primitives, +and <code>APPLY</code> accepts it so that the text of a defined procedure can be +used as a template. +</p> +<p>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 <code>OUTPUT</code> and <code>STOP</code>. For example, the following two +instructions are identical: +</p> +<div class="example"> +<pre class="example">? print apply [[x] :x+3] [5] +8 +? print apply [[x] [output :x+3]] [5] +8 +</pre></div> + +<p>although the first instruction is in named-slot form and the second is in +procedure-text form. The named-slot form can be understood as telling Logo to +evaluate the expression <tt>:x+3</tt><!-- /@w --> in place of the entire invocation of +apply, with the variable <code>x</code> temporarily given the value <code>5</code>. The +procedure-text form can be understood as invoking the procedure +</p> +<div class="example"> +<pre class="example">to foo :x +output :x+3 +end +</pre></div> + +<p>with input <code>5</code>, but without actually giving the procedure a name. If +the use of <code>OUTPUT</code> were interchanged in these two examples, we’d get errors: +</p> +<div class="example"> +<pre class="example">? print apply [[x] 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 +</pre></div> + +<p>The named-slot form can be used with <code>STOP</code> or <code>OUTPUT</code> inside a procedure, +to stop the enclosing procedure. +</p> +<p>The following iteration tools are extended versions of the ones in Appendix +B of the book <cite>Computer Science Logo Style, Volume 3: Advanced Topics</cite> by +Brian Harvey [MIT Press, 1987]. The extensions are primarily to allow for +variable numbers of inputs. +</p> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#APPLY" accesskey="1">APPLY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#INVOKE" accesskey="2">INVOKE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FOREACH" accesskey="3">FOREACH</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MAP" accesskey="4">MAP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MAPdSE" accesskey="5">MAPdSE</a>:</td><td> </td><td align="left" valign="top">MAP.SE +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FILTER" accesskey="6">FILTER</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FIND" accesskey="7">FIND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REDUCE" accesskey="8">REDUCE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CROSSMAP" accesskey="9">CROSSMAP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CASCADE">CASCADE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CASCADEd2">CASCADEd2</a>:</td><td> </td><td align="left" valign="top">CASCADE.2 +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#TRANSFER">TRANSFER</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="APPLY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#INVOKE" accesskey="n" rel="next">INVOKE</a>, Previous: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="p" rel="prev">TEMPLATE-BASED ITERATION</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="apply"></a> +<h4 class="unnumberedsubsec">apply</h4> +<a name="index-apply"></a> + +<div class="example"> +<pre class="example">APPLY template inputlist +</pre></div> + +<p>command or operation. Runs the <var>template</var>, filling its slots with the +members of <var>inputlist.</var> The number of members in <var>inputlist</var> must be an +acceptable number of slots for <var>template</var>. It is illegal to apply the +primitive <code>TO</code> as a template, but anything else is okay. <code>APPLY</code> outputs +what <var>template</var> outputs, if anything. +</p> + +<hr> +<a name="INVOKE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FOREACH" accesskey="n" rel="next">FOREACH</a>, Previous: <a href="usermanual.html#APPLY" accesskey="p" rel="prev">APPLY</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="invoke"></a> +<h4 class="unnumberedsubsec">invoke</h4> +<a name="index-invoke"></a> + +<div class="example"> +<pre class="example">INVOKE template input (library procedure) +(INVOKE template input1 input2 ...) +</pre></div> + +<p>command or operation. Exactly like <code>APPLY</code> except that the inputs are +provided as separate expressions rather than in a list. +</p> +<hr> +<a name="FOREACH"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MAP" accesskey="n" rel="next">MAP</a>, Previous: <a href="usermanual.html#INVOKE" accesskey="p" rel="prev">INVOKE</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="foreach"></a> +<h4 class="unnumberedsubsec">foreach</h4> +<a name="index-foreach"></a> + +<div class="example"> +<pre class="example">FOREACH data template (library procedure) +(FOREACH data1 data2 ... template) +</pre></div> + +<p>command. Evaluates the <var>template</var> list repeatedly, once for each member +of the <var>data</var> list. If more than one <var>data</var> list are given, each of them +must be the same length. (The <var>data</var> inputs can be words, in which case +the template is evaluated once for each character.) +</p> +<p>In a template, the symbol <code>?REST</code> represents the portion of the +<var>data</var> input to the right of the member currently being used as the +<code>?</code> slot-filler. That is, if the <var>data</var> input is +<code>[A B C D E]</code><!-- /@w --> and the template is being evaluated with <code>?</code> +replaced by <code>B</code>, then <code>?REST</code> would be replaced by +<code>[C D E]</code><!-- /@w -->. If multiple parallel slots are used, then +<tt>(?REST 1)</tt><!-- /@w --> goes with ?1, etc. +</p> +<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var> +input of the member currently being used as the <code>?</code> slot-filler. That is, if +the data input is <code>[A B C D E]</code><!-- /@w --> and the template is being evaluated with +<code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced by <code>2</code>. +</p> +<hr> +<a name="MAP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MAPdSE" accesskey="n" rel="next">MAPdSE</a>, Previous: <a href="usermanual.html#FOREACH" accesskey="p" rel="prev">FOREACH</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="map"></a> +<h4 class="unnumberedsubsec">map</h4> +<a name="index-map"></a> + +<div class="example"> +<pre class="example">MAP template data (library procedure) +(MAP template data1 data2 ...) +</pre></div> + +<p>outputs a word or list, depending on the type of the <var>data</var> input, of the +same length as that <var>data</var> input. (If more than one <var>data</var> input are +given, the output is of the same type as <var>data1</var>.) Each member of the +output is the result of evaluating the <var>template</var> list, filling the slots +with the corresponding member(s) of the <var>data</var> input(s). (All <var>data</var> +inputs 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 +<code>WORD</code>. +</p> +<p>In a template, the symbol <code>?REST</code> represents the portion of the data +input to the right of the member currently being used as the <code>?</code> +slot-filler. That is, if the <var>data</var> input is <code>[A B C D E]</code><!-- /@w --> and +the <var>template</var> is being evaluated with <code>?</code> replaced by <code>B</code>, then +<code>?REST</code> would be replaced by <code>[C D E]</code><!-- /@w -->. If multiple parallel +slots are used, then <tt>(?REST 1)</tt><!-- /@w --> goes with <code>?1</code>, etc. +</p> +<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var> +input of the member currently being used as the <code>?</code> slot-filler. That +is, if the data input is <code>[A B C D E]</code><!-- /@w --> and the template is being +evaluated with <code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced +by <code>2</code>. +</p> +<p>See <a href="usermanual.html#WORD">WORD</a> . +</p> +<hr> +<a name="MAPdSE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FILTER" accesskey="n" rel="next">FILTER</a>, Previous: <a href="usermanual.html#MAP" accesskey="p" rel="prev">MAP</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="map_002ese"></a> +<h4 class="unnumberedsubsec">map.se</h4> +<a name="index-map_002ese"></a> + +<div class="example"> +<pre class="example">MAP.SE template data (library procedure) +(MAP.SE template data1 data2 ...) +</pre></div> + +<p>outputs a list formed by evaluating the <var>template</var> list repeatedly and +concatenating the results using <code>SENTENCE</code>. 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 <var>data</var> +input(s). (If the result of an evaluation is the empty list, it +contributes nothing to the final output.) The <var>data</var> inputs may be words +or lists. +</p> +<p>In a template, the symbol <code>?REST</code> represents the portion of the data +input to the right of the member currently being used as the <code>?</code> +slot-filler. That is, if the data input is <code>[A B C D E]</code><!-- /@w --> and the +template is being evaluated with <code>?</code> replaced by <code>B</code>, then +<code>?REST</code> would be replaced by <code>[C D E]</code><!-- /@w -->. If multiple parallel +slots are used, then <tt>(?REST 1)</tt><!-- /@w --> goes with <code>?1</code>, etc. +</p> +<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var> +input of the member currently being used as the <code>?</code> slot-filler. That +is, if the data input is <code>[A B C D E]</code><!-- /@w --> and the template is being +evaluated with <code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced +by <code>2</code>. +</p> +<p>See <a href="usermanual.html#SENTENCE">SENTENCE</a> . +</p> +<hr> +<a name="FILTER"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FIND" accesskey="n" rel="next">FIND</a>, Previous: <a href="usermanual.html#MAPdSE" accesskey="p" rel="prev">MAPdSE</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="filter"></a> +<h4 class="unnumberedsubsec">filter</h4> +<a name="index-filter"></a> + +<div class="example"> +<pre class="example">FILTER tftemplate data (library procedure) +</pre></div> + +<p>outputs a word or list, depending on the type of the <var>data</var> 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 <code>TRUE</code> or <code>FALSE</code> value. If +the value is <code>TRUE</code>, then the corresponding input constituent is included +in the output. +</p> +<div class="example"> +<pre class="example">? print filter "vowelp "elephant +eea +? +</pre></div> + +<p>In a template, the symbol <code>?REST</code> represents the portion of the +<var>data</var> input to the right of the member currently being used as the +<code>?</code> slot-filler. That is, if the data input is <code>[A B C D E]</code><!-- /@w --> +and the template is being evaluated with <code>?</code> replaced by <code>B</code>, then +<code>?REST</code> would be replaced by <code>[C D E]</code><!-- /@w -->. +</p> +<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var> +input of the member currently being used as the <code>?</code> slot-filler. That +is, if the data input is <code>[A B C D E]</code><!-- /@w --> and the template is being +evaluated with <code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced +by <code>2</code>. +</p> +<hr> +<a name="FIND"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REDUCE" accesskey="n" rel="next">REDUCE</a>, Previous: <a href="usermanual.html#FILTER" accesskey="p" rel="prev">FILTER</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="find"></a> +<h4 class="unnumberedsubsec">find</h4> +<a name="index-find"></a> + +<div class="example"> +<pre class="example">FIND tftemplate data (library procedure) +</pre></div> + +<p>outputs the first constituent of the <var>data</var> input (the first member of a +list, or the first character of a word) for which the value produced by +evaluating the <var>template</var> with that consituent in its slot is <code>TRUE</code>. +If there is no such constituent, the empty list is output. +</p> +<p>In a template, the symbol <code>?REST</code> represents the portion of the +<var>data</var> input to the right of the member currently being used as the +<code>?</code> slot-filler. That is, if the data input is <code>[A B C D E]</code><!-- /@w --> +and the template is being evaluated with <code>?</code> replaced by <code>B</code>, then +<code>?REST</code> would be replaced by <code>[C D E]</code><!-- /@w -->. +</p> +<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var> +input of the member currently being used as the <code>?</code> slot-filler. That +is, if the data input is <code>[A B C D E]</code><!-- /@w --> and the template is being +evaluated with <code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced +by <code>2</code>. +</p> +<hr> +<a name="REDUCE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CROSSMAP" accesskey="n" rel="next">CROSSMAP</a>, Previous: <a href="usermanual.html#FIND" accesskey="p" rel="prev">FIND</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="reduce"></a> +<h4 class="unnumberedsubsec">reduce</h4> +<a name="index-reduce"></a> + +<div class="example"> +<pre class="example">REDUCE template data (library procedure) +</pre></div> + +<p>outputs the result of applying the <var>template</var> to accumulate the members of +the <var>data</var> input. The template must be a two-slot function. Typically it +is an associative function name like <code>SUM</code>. If the <var>data</var> 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 <code>?1</code> +filled with the next-to-last consitient and <code>?2</code> with the last +constituent. Then, if there are more constituents, the template is applied +with <code>?1</code> filled with the next constituent to the left and <code>?2</code> with +the result from the previous evaluation. This process continues until all +constituents have been used. The data input may not be empty. +</p> +<p>Note: If the template is, like <code>SUM</code>, the name of a procedure that is +capable of accepting arbitrarily many inputs, it is more efficient to +use <code>APPLY</code> instead of <code>REDUCE</code>. The latter is good for associative +procedures that have been written to accept exactly two inputs: +</p> +<div class="example"> +<pre class="example">to max :a :b +output ifelse :a > :b [:a] [:b] +end + +print reduce "max [...] +</pre></div> + +<p>Alternatively, <code>REDUCE</code> can be used to write <code>MAX</code> as a procedure +that accepts any number of inputs, as <code>SUM</code> does: +</p> +<div class="example"> +<pre class="example">to max [:inputs] 2 +if emptyp :inputs ~ + [(throw "error [not enough inputs to max])] +output reduce [ifelse ?1 > ?2 [?1] [?2]] :inputs +end +</pre></div> + +<hr> +<a name="CROSSMAP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CASCADE" accesskey="n" rel="next">CASCADE</a>, Previous: <a href="usermanual.html#REDUCE" accesskey="p" rel="prev">REDUCE</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="crossmap"></a> +<h4 class="unnumberedsubsec">crossmap</h4> +<a name="index-crossmap"></a> + +<div class="example"> +<pre class="example">CROSSMAP template listlist (library procedure) +(CROSSMAP template data1 data2 ...) +</pre></div> + +<p>outputs a list containing the results of template evaluations. Each +<var>data</var> list contributes to a slot in the template; the number of slots is +equal to the number of <var>data</var> list inputs. As a special case, if only one +<var>data</var> list input is given, that list is taken as a list of data lists, +and each of its members contributes values to a slot. <code>CROSSMAP</code> differs +from <code>MAP</code> 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. +</p> +<div class="example"> +<pre class="example">? show (crossmap [word ?1 ?2] [a b c] [1 2 3 4]) +[a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4] +? +</pre></div> + +<p>For compatibility with the version in the first edition of CSLS +<a name="DOCF1" href="usermanual.html#FOOT1"><sup>1</sup></a>, <code>CROSSMAP</code> templates may +use the notation <code>:1</code> instead of <code>?1</code> to indicate slots. +</p> +<p>See <a href="usermanual.html#MAP">MAP</a> . +</p> +<hr> +<a name="CASCADE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CASCADEd2" accesskey="n" rel="next">CASCADEd2</a>, Previous: <a href="usermanual.html#CROSSMAP" accesskey="p" rel="prev">CROSSMAP</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="cascade"></a> +<h4 class="unnumberedsubsec">cascade</h4> +<a name="index-cascade"></a> + +<div class="example"> +<pre class="example">CASCADE endtest template startvalue (library procedure) +(CASCADE endtest tmp1 sv1 tmp2 sv2 ...) +(CASCADE endtest tmp1 sv1 tmp2 sv2 ... finaltemplate) +</pre></div> + +<p>outputs the result of applying a template (or several templates, as +explained below) repeatedly, with a given value filling the slot the +first time, and the result of each application filling the slot for the +following application. +</p> +<p>In the simplest case, <code>CASCADE</code> 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 <code>CASCADE</code> evaluation continues as long as the +predicate value is <code>FALSE</code>. (In other words, the predicate template +indicates the condition for stopping.) +</p> +<p>If the template is evaluated zero times, the output from <code>CASCADE</code> is the +third (<var>startvalue</var>) input. Otherwise, the output is the value produced +by the last template evaluation. +</p> +<p><code>CASCADE</code> templates may include the symbol <code>#</code> 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. +</p> +<div class="example"> +<pre class="example">? show cascade 5 [lput # ?] [] +[1 2 3 4 5] +? show cascade [vowelp first ?] [bf ?] "spring +ing +? show cascade 5 [# * ?] 1 +120 +? +</pre></div> + +<p>Several cascaded results can be computed in parallel by providing additional +template-startvalue pairs as inputs to <code>CASCADE</code>. 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, <code>?2</code>, 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 <code>CASCADE</code>. +</p> +<div class="example"> +<pre class="example">to fibonacci :n +output (cascade :n [?1 + ?2] 1 [?1] 0) +end + +to piglatin :word +output (cascade [vowelp first ?] ~ + [word bf ? first ?] ~ + :word ~ + [word ? "ay]) +end +</pre></div> + +<hr> +<a name="CASCADEd2"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#TRANSFER" accesskey="n" rel="next">TRANSFER</a>, Previous: <a href="usermanual.html#CASCADE" accesskey="p" rel="prev">CASCADE</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="cascade_002e2"></a> +<h4 class="unnumberedsubsec">cascade.2</h4> +<a name="index-cascade_002e2"></a> + +<div class="example"> +<pre class="example">CASCADE.2 endtest temp1 startval1 temp2 startval2 (library procedure) +</pre></div> + +<p>outputs the result of invoking <code>CASCADE</code> with the same inputs. The only +difference is that the default number of inputs is five instead of three. +</p> +<hr> +<a name="TRANSFER"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#CASCADEd2" accesskey="p" rel="prev">CASCADEd2</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="transfer"></a> +<h4 class="unnumberedsubsec">transfer</h4> +<a name="index-transfer"></a> + +<div class="example"> +<pre class="example">TRANSFER endtest template inbasket (library procedure) +</pre></div> + +<p>outputs the result of repeated evaluation of the <var>template</var>. The template +is evaluated once for each member of the list <var>inbasket</var>. <code>TRANSFER</code> +maintains an <em>outbasket</em> that is initially the empty list. After each +evaluation of the template, the resulting value becomes the new +outbasket. +</p> +<p>In the template, the symbol <code>?IN</code> represents the current member from the +inbasket; the symbol <code>?OUT</code> represents the entire current outbasket. +Other slot symbols should not be used. +</p> +<p>If the first (<var>endtest</var>) input is an empty list, evaluation continues +until all inbasket members have been used. If not, the first input must +be a predicate expression template, and evaluation continues until +either that template’s value is <code>TRUE</code> or the inbasket is used up. +</p> + + +<hr> +<a name="MACROS"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERROR-PROCESSING" accesskey="n" rel="next">ERROR PROCESSING</a>, Previous: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="p" rel="prev">CONTROL STRUCTURES</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Macros"></a> +<h2 class="chapter">10 Macros</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#dMACRO" accesskey="1">dMACRO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#dDEFMACRO" accesskey="2">dDEFMACRO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MACROP" accesskey="3">MACROP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MACROEXPAND" accesskey="4">MACROEXPAND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="dMACRO"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#dDEFMACRO" accesskey="n" rel="next">dDEFMACRO</a>, Previous: <a href="usermanual.html#MACROS" accesskey="p" rel="prev">MACROS</a>, Up: <a href="usermanual.html#MACROS" accesskey="u" rel="up">MACROS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_002emacro"></a> +<h3 class="unnumberedsec">.macro</h3> +<a name="index-_002emacro"></a> +<a name="index-_002edefmacro"></a> + +<div class="example"> +<pre class="example">.MACRO procname :input1 :input2 ... (special form) +.DEFMACRO procname text +</pre></div> + +<p>A macro is a special kind of procedure whose output is evaluated as Logo +instructions in the context of the macro’s caller. <code>.MACRO</code> is exactly +like <code>TO</code> except that the new procedure becomes a macro; <code>.DEFMACRO</code> +is exactly like <code>DEFINE</code> with the same exception. +</p> +<p>Macros are useful for inventing new control structures comparable to +<code>REPEAT</code>, <code>IF</code>, and so on. Such control structures can almost, but +not quite, be duplicated by ordinary Logo procedures. For example, here is an +ordinary procedure version of <code>REPEAT</code>: +</p> +<div class="example"> +<pre class="example">to my.repeat :num :instructions +if :num=0 [stop] +run :instructions +my.repeat :num-1 :instructions +end +</pre></div> + +<p>This version works fine for most purposes, e.g., +</p> +<div class="example"> +<pre class="example">my.repeat 5 [print "hello] +</pre></div> + +<p>But it doesn’t work if the instructions to be carried out include +<code>OUTPUT</code>, <code>STOP</code>, or <code>LOCAL</code>. For example, consider this +procedure: +</p> +<div class="example"> +<pre class="example">to example +print [Guess my secret word. You get three guesses.] +repeat 3 [type "|?? | ~ + if readword = "secret [pr "Right! stop]] +print [Sorry, the word was "secret"!] +end +</pre></div> + +<p>This procedure works as written, but if <code>MY.REPEAT</code> is used instead of +<code>REPEAT</code>, it won’t work because the <code>STOP</code> will stop +<code>MY.REPEAT</code> instead of stopping <code>EXAMPLE</code> as desired. +</p> +<p>The solution is to make <code>MY.REPEAT</code> a macro. Instead of actually carrying +out the computation, 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 +<code>REPEAT</code>: +</p> +<div class="example"> +<pre class="example">.macro my.repeat :num :instructions +if :num=0 [output []] +output sentence :instructions ~ + (list "my.repeat :num-1 :instructions) +end +</pre></div> + +<p>Every macro is an operation — it must always output something. Even in +the base case, <code>MY.REPEAT</code> outputs an empty instruction list. To show how +<code>MY.REPEAT</code> works, let’s take the example +</p> +<div class="example"> +<pre class="example">my.repeat 5 [print "hello] +</pre></div> + +<p>For this example, <code>MY.REPEAT</code> will output the instruction list +</p> +<div class="example"> +<pre class="example">[print "hello my.repeat 4 [print "hello]] +</pre></div> + +<p>Logo then executes these instructions in place of the original invocation of +<code>MY.REPEAT</code>; this prints <code>hello</code> once and invokes another +repetition. +</p> +<p>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 approach is to make <code>MY.REPEAT</code> +a macro that works just like the non-macro version unless the +instructions to be repeated include <code>OUTPUT</code> or <code>STOP</code>: +</p> +<div class="example"> +<pre class="example">.macro my.repeat :num :instructions +catch "repeat.catchtag ~ + [op repeat.done runresult [repeat1 :num :instructions]] +op [] +end + +to repeat1 :num :instructions +if :num=0 [throw "repeat.catchtag] +run :instructions +.maybeoutput repeat1 :num-1 :instructions +end + +to repeat.done :repeat.result +if emptyp :repeat.result [op [stop]] +op list "output quoted first :repeat.result +end +</pre></div> + +<p>If the instructions do not include <code>STOP</code> or <code>OUTPUT</code>, then +<code>REPEAT1</code> will reach its base case and invoke <code>THROW</code>. As a result, +<code>MY.REPEAT</code>’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 +<code>STOP</code> or <code>OUTPUT</code> happens, then <code>REPEAT.DONE</code> will output a +<code>STOP</code> or <code>OUTPUT</code> instruction that will be executed in the +caller’s context. +</p> +<p>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 +defining a macro that doesn’t terminate, or by failing to construct the +instruction list properly. +</p> +<p>Lisp users should note that Logo macros are <em>not</em> 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. +</p> +<p>Here’s another example: +</p> +<div class="example"> +<pre class="example">.macro localmake :name :value +output (list "local ~ + word "" :name ~ + "apply ~ + ""make ~ + (list :name :value)) +end +</pre></div> + +<p>It’s used this way: +</p> +<div class="example"> +<pre class="example">to try +localmake "garply "hello +print :garply +end +</pre></div> + +<p><code>LOCALMAKE</code> outputs the list +</p> +<div class="display"> +<pre class="display">[local "garply apply "make [garply hello]] +</pre></div> + +<p>The reason for the use of <code>APPLY</code> is to avoid having to decide whether or +not the second input to <code>MAKE</code> requires a quotation mark before it. (In +this case it would — <code>MAKE "GARPLY "HELLO</code> — but the quotation mark +would be wrong if the value were a list.) +</p> +<p>It’s often convenient to use the <tt>`</tt> function to construct the instruction +list: +</p> +<div class="example"> +<pre class="example">.macro localmake :name :value +op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]] +end +</pre></div> + +<p>On the other hand, <tt>`</tt> is pretty slow, since it’s tree recursive and +written in Logo. +</p> +<p>See <a href="usermanual.html#TO">TO</a> , +<a href="usermanual.html#DEFINE">DEFINE</a> , +<a href="usermanual.html#APPLY">APPLY</a> , +<a href="usermanual.html#STOP">STOP</a> , +<a href="usermanual.html#OUTPUT">OUTPUT</a> . +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#dDEFMACRO" accesskey="1">dDEFMACRO</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MACROP" accesskey="2">MACROP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#MACROEXPAND" accesskey="3">MACROEXPAND</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="dDEFMACRO"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MACROP" accesskey="n" rel="next">MACROP</a>, Previous: <a href="usermanual.html#dMACRO" accesskey="p" rel="prev">dMACRO</a>, Up: <a href="usermanual.html#MACROS" accesskey="u" rel="up">MACROS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="g_t_002edefmacro"></a> +<h4 class="unnumberedsubsec">.defmacro</h4> + +<p>See <a href="usermanual.html#dMACRO">dMACRO</a> . +</p> +<hr> +<a name="MACROP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#MACROEXPAND" accesskey="n" rel="next">MACROEXPAND</a>, Previous: <a href="usermanual.html#dDEFMACRO" accesskey="p" rel="prev">dDEFMACRO</a>, Up: <a href="usermanual.html#MACROS" accesskey="u" rel="up">MACROS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="macrop"></a> +<h4 class="unnumberedsubsec">macrop</h4> +<a name="index-macrop"></a> +<a name="index-macro_003f"></a> + +<div class="example"> +<pre class="example">MACROP name +MACRO? name +</pre></div> + +<p>outputs <code>TRUE</code> if its input is the name of a macro. +</p> +<hr> +<a name="MACROEXPAND"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#MACROP" accesskey="p" rel="prev">MACROP</a>, Up: <a href="usermanual.html#MACROS" accesskey="u" rel="up">MACROS</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="macroexpand"></a> +<h4 class="unnumberedsubsec">macroexpand</h4> +<a name="index-macroexpand"></a> + +<div class="example"> +<pre class="example">MACROEXPAND expr (library procedure) +</pre></div> + +<p>takes as its input a Logo 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. +</p> +<div class="example"> +<pre class="example">.macro localmake :name :value +op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]] +end + +? show macroexpand [localmake "pi 3.14159] +[local "pi apply "make [pi 3.14159]] +</pre></div> + + + +<hr> +<a name="ERROR-PROCESSING"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="n" rel="next">SPECIAL VARIABLES</a>, Previous: <a href="usermanual.html#MACROS" accesskey="p" rel="prev">MACROS</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Error-Processing"></a> +<h2 class="chapter">11 Error Processing</h2> + +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERROR-CODES" accesskey="1">ERROR CODES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<p>If an error occurs, Logo takes the following steps. First, if there is an +available variable named <code>ERRACT</code>, Logo takes its value as an +instructionlist and runs the instructions. The operation <code>ERROR</code> may be +used within the instructions (once) to examine the error condition. If the +instructionlist invokes <code>PAUSE</code>, the error message is printed before the +pause happens. Certain errors are <em>recoverable</em>; 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 <code>ERRACT</code> invokes <code>PAUSE</code> and +the user then invokes <code>CONTINUE</code> with an input, that input becomes the +output from <code>PAUSE</code> and therefore the output from the <code>ERRACT</code> +instructionlist.) +</p> +<p>It is possible for an <code>ERRACT</code> 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 +<code>ERRACT</code> instructionlist without user interaction, the message +‘<samp>Erract loop</samp>’ is printed and control returns to toplevel. "Without user +interaction" means that if <code>ERRACT</code> invokes <code>PAUSE</code> and the user +provides an incorrect value, this loop prevention mechanism does not take +effect and the user gets to try again. +</p> +<p>During the running of the <code>ERRACT</code> instructionlist, <code>ERRACT</code> is +locally unbound, so an error in the <code>ERRACT</code> 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 <code>[PAUSE]</code> to +<code>ERRACT</code> during the pause. But such an error will not return to +toplevel; it will remain within the original pause loop. +</p> +<p>If there is no available <code>ERRACT</code> value, Logo handles the error by +generating an internal <tt>THROW "ERROR</tt><!-- /@w -->. (A user program can also +generate an error condition deliberately by invoking <code>THROW</code>.) If this +throw is not caught by a <tt>CATCH "ERROR</tt><!-- /@w --> 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 <tt>CATCH "ERROR</tt><!-- /@w --> in a +user program locally unbinds <code>ERRACT</code>, so the effect is that whichever of +<code>ERRACT</code> and <tt>CATCH "ERROR</tt><!-- /@w --> is more local will take precedence. +</p> +<p>If a floating point overflow occurs during an arithmetic operation, or a +two-input mathematical function (like <code>POWER</code>) is invoked with an illegal +combination of inputs, the ‘<samp>doesn't like</samp>’ message refers to the second +operand, but should be taken as meaning the combination. +</p> +<p>See <a href="usermanual.html#ERRACT">ERRACT</a> , +<a href="usermanual.html#THROW">THROW</a> , +<a href="usermanual.html#ERROR">ERROR</a> , +<a href="usermanual.html#CATCH">CATCH</a> , +<a href="usermanual.html#PAUSE">PAUSE</a> , +<a href="usermanual.html#CONTINUE">CONTINUE</a> . +</p> +<hr> +<a name="ERROR-CODES"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#ERROR-PROCESSING" accesskey="p" rel="prev">ERROR PROCESSING</a>, Up: <a href="usermanual.html#ERROR-PROCESSING" accesskey="u" rel="up">ERROR PROCESSING</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Error-Codes"></a> +<h3 class="section">11.1 Error Codes</h3> +<a name="index-errors"></a> + +<p>Here are the numeric codes that appear as the first member of the list +output by <code>ERROR</code> 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 <code>ERRACT</code> 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. +</p> +<div class="example"> +<pre class="example"> 0 Fatal internal error <span class="roman">(can’t be caught)</span> + 1 Out of memory + 2 Stack overflow + 3 Turtle out of bounds + 4 <var>proc</var> doesn't like <var>datum</var> as input <span class="roman">(not recoverable)</span> + 5 <var>proc</var> didn't output to <var>proc</var> + 6 Not enough inputs to <var>proc</var> + 7 <code>proc</code> doesn't like <code>datum</code> as input <span class="roman">(recoverable)</span> + 8 Too much inside ()'s + 9 You don't say what to do with <var>datum</var> + 10 ')' not found + 11 <var>var</var> has no value + 12 Unexpected ')' + 13 I don't know how to <var>proc</var> <span class="roman">(recoverable)</span> + 14 Can't find catch tag for <var>throwtag</var> + 15 <var>proc</var> is already defined + 16 Stopped + 17 Already dribbling + 18 File system error + 19 Assuming you mean IFELSE, not IF <span class="roman">(warning only)</span> + 20 <var>var</var> shadowed by local in procedure call <span class="roman">(warning only)</span> + 21 Throw "Error + 22 <var>proc</var> is a primitive + 23 Can't use TO inside a procedure + 24 I don't know how to <var>proc</var> <span class="roman">(not recoverable)</span> + 25 IFTRUE/IFFALSE without TEST + 26 Unexpected ']' + 27 Unexpected '}' + 28 Couldn't initialize graphics + 29 Macro returned <var>value</var> instead of a list + 30 You don't say what to do with <var>value</var> + 31 Can only use STOP or OUTPUT inside a procedure + 32 APPLY doesn't like <var>badthing</var> as input + 33 END inside multi-line instruction + 34 Really out of memory <span class="roman">(can’t be caught)</span> + 35 user-generated error message (THROW "ERROR <var>message</var>) + 36 END inside multi-line instruction + 37 Bad default expression for optional input: <var>expr</var> + 38 Can't use OUTPUT or STOP inside RUNRESULT + 39 Assuming you meant 'FD 100', not FD100 <span class="roman">(or similar)</span> + 40 I can't open file <var>filename</var> + 41 File <var>filename</var> already open + 42 File <var>filename</var> not open + 43 Runlist [<var>expr</var> <var>expr</var>] has more than one expression. +</pre></div> + + +<hr> +<a name="SPECIAL-VARIABLES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#INTERNATIONALIZATION" accesskey="n" rel="next">INTERNATIONALIZATION</a>, Previous: <a href="usermanual.html#ERROR-PROCESSING" accesskey="p" rel="prev">ERROR PROCESSING</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Special-Variables"></a> +<h2 class="chapter">12 Special Variables</h2> + +<p>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 <code>ALLOWGETSET</code>, <code>CASEIGNOREDP</code>, and +<code>UNBURYONEDIT</code>, which are <code>TRUE</code> and buried. +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#ALLOWGETSET" accesskey="1">ALLOWGETSET</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#BUTTONACT" accesskey="2">BUTTONACT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CASEIGNOREDP" accesskey="3">CASEIGNOREDP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#COMMANDLINE" accesskey="4">COMMANDLINE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERRACT" accesskey="5">ERRACT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FULLPRINTP" accesskey="6">FULLPRINTP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#KEYACT" accesskey="7">KEYACT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOADNOISILY" accesskey="8">LOADNOISILY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRINTDEPTHLIMIT" accesskey="9">PRINTDEPTHLIMIT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRINTWIDTHLIMIT">PRINTWIDTHLIMIT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REDEFP">REDEFP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#STARTUP">STARTUP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UNBURYONEDIT">UNBURYONEDIT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#USEALTERNATENAMES">USEALTERNATENAMES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOGOVERSION">LOGOVERSION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOGOPLATFORM">LOGOPLATFORM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="ALLOWGETSET"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#BUTTONACT" accesskey="n" rel="next">BUTTONACT</a>, Previous: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="p" rel="prev">SPECIAL VARIABLES</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="allowgetset"></a> +<h3 class="unnumberedsec">allowgetset</h3> +<a name="index-allowgetset"></a> + +<div class="example"> +<pre class="example">ALLOWGETSET (variable) +</pre></div> + +<p>if <code>TRUE</code>, 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 <code>SET</code>) for a variable of the same name +(without the <code>SET</code> if appropriate). +</p> +<table class="menu" border="0" cellspacing="0"> +<tr><td align="left" valign="top">• <a href="usermanual.html#BUTTONACT" accesskey="1">BUTTONACT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#CASEIGNOREDP" accesskey="2">CASEIGNOREDP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#COMMANDLINE" accesskey="3">COMMANDLINE</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#ERRACT" accesskey="4">ERRACT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#FULLPRINTP" accesskey="5">FULLPRINTP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#KEYACT" accesskey="6">KEYACT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOADNOISILY" accesskey="7">LOADNOISILY</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRINTDEPTHLIMIT" accesskey="8">PRINTDEPTHLIMIT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#PRINTWIDTHLIMIT" accesskey="9">PRINTWIDTHLIMIT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#REDEFP">REDEFP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#STARTUP">STARTUP</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#UNBURYONEDIT">UNBURYONEDIT</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#USEALTERNATENAMES">USEALTERNATENAMES</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOGOVERSION">LOGOVERSION</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +<tr><td align="left" valign="top">• <a href="usermanual.html#LOGOPLATFORM">LOGOPLATFORM</a>:</td><td> </td><td align="left" valign="top"> +</td></tr> +</table> + +<hr> +<a name="BUTTONACT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#CASEIGNOREDP" accesskey="n" rel="next">CASEIGNOREDP</a>, Previous: <a href="usermanual.html#ALLOWGETSET" accesskey="p" rel="prev">ALLOWGETSET</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="buttonact"></a> +<h4 class="unnumberedsubsec">buttonact</h4> +<a name="index-buttonact"></a> + +<div class="example"> +<pre class="example">BUTTONACT (variable) +</pre></div> + +<p>if nonempty, should be an instruction list that will be evaluated +whenever a mouse button is pressed. Note that the user may have +released the button before the instructions are evaluated. <code>BUTTON</code> +will still output which button was most recently pressed. <code>CLICKPOS</code> +will output the position of the mouse cursor at the moment the +button was pressed; this may be different from <code>MOUSEPOS</code> if the +user moves the mouse after clicking. +</p> +<p>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 <code>BUTTONACT</code> to the empty +list. One easy way to do that is the following: +</p> +<div class="example"> +<pre class="example">make "buttonact [button.action] + +to button.action [:buttonact []] +... ; whatever you want the button to do +end +</pre></div> + +<hr> +<a name="CASEIGNOREDP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#COMMANDLINE" accesskey="n" rel="next">COMMANDLINE</a>, Previous: <a href="usermanual.html#BUTTONACT" accesskey="p" rel="prev">BUTTONACT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="caseignoredp"></a> +<h4 class="unnumberedsubsec">caseignoredp</h4> +<a name="index-caseignoredp"></a> + +<div class="example"> +<pre class="example">CASEIGNOREDP (variable) +</pre></div> + +<p>if <code>TRUE</code>, indicates that lower case and upper case letters should be +considered equal by <code>EQUALP</code>, <code>BEFOREP</code>, <code>MEMBERP</code>, etc. Logo +initially makes this variable <code>TRUE</code>, and buries it. +</p> +<p>See <a href="usermanual.html#EQUALP">EQUALP</a> , +<a href="usermanual.html#BEFOREP">BEFOREP</a> , +<a href="usermanual.html#MEMBERP">MEMBERP</a> . +</p> +<hr> +<a name="COMMANDLINE"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#ERRACT" accesskey="n" rel="next">ERRACT</a>, Previous: <a href="usermanual.html#CASEIGNOREDP" accesskey="p" rel="prev">CASEIGNOREDP</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="commandline"></a> +<h4 class="unnumberedsubsec">commandline</h4> +<a name="index-commandline"></a> + +<div class="example"> +<pre class="example">COMMANDLINE (variable) +</pre></div> + +<p>contains any text appearing after a hyphen on the command line used +to start Logo. +</p> +<hr> +<a name="ERRACT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#FULLPRINTP" accesskey="n" rel="next">FULLPRINTP</a>, Previous: <a href="usermanual.html#COMMANDLINE" accesskey="p" rel="prev">COMMANDLINE</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="erract"></a> +<h4 class="unnumberedsubsec">erract</h4> +<a name="index-erract"></a> + +<div class="example"> +<pre class="example">ERRACT (variable) +</pre></div> + +<p>an instructionlist that will be run in the event of an error. Typically +has the value <code>[PAUSE]</code> to allow interactive debugging. +</p> +<p>See <a href="usermanual.html#PAUSE">PAUSE</a> . +</p> +<hr> +<a name="FULLPRINTP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#KEYACT" accesskey="n" rel="next">KEYACT</a>, Previous: <a href="usermanual.html#ERRACT" accesskey="p" rel="prev">ERRACT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="fullprintp"></a> +<h4 class="unnumberedsubsec">fullprintp</h4> +<a name="index-fullprintp"></a> + +<div class="example"> +<pre class="example">FULLPRINTP (variable) +</pre></div> + +<p>if <code>TRUE</code>, 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 <code>TRUE</code> then the empty word (however it was created) +prints as <code>||</code>. (Otherwise it prints as nothing at all.) +</p> +<hr> +<a name="KEYACT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOADNOISILY" accesskey="n" rel="next">LOADNOISILY</a>, Previous: <a href="usermanual.html#FULLPRINTP" accesskey="p" rel="prev">FULLPRINTP</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="keyact"></a> +<h4 class="unnumberedsubsec">keyact</h4> +<a name="index-keyact"></a> + +<div class="example"> +<pre class="example">KEYACT (variable) +</pre></div> + +<p>if nonempty, should be an instruction list that will be evaluated +whenever a key is pressed on the keyboard. The instruction list +can use <code>READCHAR</code> to find out what key was pressed. Note that only +keys that produce characters qualify; pressing <code>SHIFT</code> or <code>CONTROL</code> +alone will not cause <code>KEYACT</code> to be evaluated. +</p> +<p>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 <code>KEYACT</code> to the empty +list. One easy way to do that is the following: +</p> +<div class="example"> +<pre class="example">make "keyact [key.action] + +to key.action [:keyact []] +... ; whatever you want the key to do +end +</pre></div> + +<hr> +<a name="LOADNOISILY"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PRINTDEPTHLIMIT" accesskey="n" rel="next">PRINTDEPTHLIMIT</a>, Previous: <a href="usermanual.html#KEYACT" accesskey="p" rel="prev">KEYACT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="loadnoisily"></a> +<h4 class="unnumberedsubsec">loadnoisily</h4> +<a name="index-loadnoisily"></a> + +<div class="example"> +<pre class="example">LOADNOISILY (variable) +</pre></div> + +<p>if <code>TRUE</code>, prints the names of procedures defined when loading from a file +(including the temporary file made by <code>EDIT</code>). +</p> +<p>See <a href="usermanual.html#EDIT">EDIT</a> . +</p> +<hr> +<a name="PRINTDEPTHLIMIT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#PRINTWIDTHLIMIT" accesskey="n" rel="next">PRINTWIDTHLIMIT</a>, Previous: <a href="usermanual.html#LOADNOISILY" accesskey="p" rel="prev">LOADNOISILY</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="printdepthlimit"></a> +<h4 class="unnumberedsubsec">printdepthlimit</h4> +<a name="index-printdepthlimit"></a> + +<div class="example"> +<pre class="example">PRINTDEPTHLIMIT (variable) +</pre></div> + +<p>if a nonnegative integer, indicates the maximum depth of sublist +structure that will be printed by <code>PRINT</code>, etc. +</p> +<p>See <a href="usermanual.html#PRINT">PRINT</a> . +</p> +<hr> +<a name="PRINTWIDTHLIMIT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#REDEFP" accesskey="n" rel="next">REDEFP</a>, Previous: <a href="usermanual.html#PRINTDEPTHLIMIT" accesskey="p" rel="prev">PRINTDEPTHLIMIT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="printwidthlimit"></a> +<h4 class="unnumberedsubsec">printwidthlimit</h4> +<a name="index-printwidthlimit"></a> + +<div class="example"> +<pre class="example">PRINTWIDTHLIMIT (variable) +</pre></div> + +<p>if a nonnegative integer, indicates the maximum number of members in any +one list that will be printed by <code>PRINT</code>, etc. +</p> +<p>See <a href="usermanual.html#PRINT">PRINT</a> . +</p> +<hr> +<a name="REDEFP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#STARTUP" accesskey="n" rel="next">STARTUP</a>, Previous: <a href="usermanual.html#PRINTWIDTHLIMIT" accesskey="p" rel="prev">PRINTWIDTHLIMIT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="redefp"></a> +<h4 class="unnumberedsubsec">redefp</h4> +<a name="index-redefp"></a> + +<div class="example"> +<pre class="example">REDEFP (variable) +</pre></div> + +<p>if <code>TRUE</code>, allows primitives to be erased (<code>ERASE</code>) or redefined +(<code>COPYDEF</code>). +</p> +<p>See <a href="usermanual.html#ERASE">ERASE</a> , +<a href="usermanual.html#COPYDEF">COPYDEF</a> . +</p> +<hr> +<a name="STARTUP"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#UNBURYONEDIT" accesskey="n" rel="next">UNBURYONEDIT</a>, Previous: <a href="usermanual.html#REDEFP" accesskey="p" rel="prev">REDEFP</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="startup"></a> +<h4 class="unnumberedsubsec">startup</h4> +<a name="index-startup"></a> + +<div class="example"> +<pre class="example">STARTUP (variable) +</pre></div> + +<p>if assigned a list value in a file loaded by <code>LOAD</code>, that value is run as +an instructionlist after the loading. +</p> +<p>See <a href="usermanual.html#LOAD">LOAD</a> . +</p> +<hr> +<a name="UNBURYONEDIT"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#USEALTERNATENAMES" accesskey="n" rel="next">USEALTERNATENAMES</a>, Previous: <a href="usermanual.html#STARTUP" accesskey="p" rel="prev">STARTUP</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="unburyonedit"></a> +<h4 class="unnumberedsubsec">unburyonedit</h4> +<a name="index-unburyonedit"></a> + +<div class="example"> +<pre class="example">UNBURYONEDIT (variable) +</pre></div> + +<p>if <code>TRUE</code>, causes any procedure defined during <code>EDIT</code> or <code>LOAD</code> +to be unburied, so that it will be saved by a later <code>SAVE</code>. Files that +want to define and bury procedures must do it in that order. +</p> +<p>See <a href="usermanual.html#EDIT">EDIT</a> , +See <a href="usermanual.html#LOAD">LOAD</a> , +See <a href="usermanual.html#SAVE">SAVE</a> . +</p> +<hr> +<a name="USEALTERNATENAMES"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOGOVERSION" accesskey="n" rel="next">LOGOVERSION</a>, Previous: <a href="usermanual.html#UNBURYONEDIT" accesskey="p" rel="prev">UNBURYONEDIT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="usealternatenames"></a> +<h4 class="unnumberedsubsec">usealternatenames</h4> +<a name="index-usealternatenames"></a> + +<div class="example"> +<pre class="example">USEALTERNATENAMES (variable) +</pre></div> + +<p>if <code>TRUE</code>, causes Logo to generate non-English words (from the +<samp>Messages</samp> file) instead of <code>TRUE</code>, <code>FALSE</code>, <code>END</code>, etc. +</p> + + +<p>Logo provides the following buried variables that can be used by programs: +</p> +<hr> +<a name="LOGOVERSION"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#LOGOPLATFORM" accesskey="n" rel="next">LOGOPLATFORM</a>, Previous: <a href="usermanual.html#USEALTERNATENAMES" accesskey="p" rel="prev">USEALTERNATENAMES</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="logoversion"></a> +<h4 class="unnumberedsubsec">logoversion</h4> +<a name="index-logoversion"></a> + +<div class="example"> +<pre class="example">LOGOVERSION (variable) +</pre></div> + +<p>a real number indicating the Logo version number, e.g., 5.5 +</p> +<hr> +<a name="LOGOPLATFORM"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#LOGOVERSION" accesskey="p" rel="prev">LOGOVERSION</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="logoplatform"></a> +<h4 class="unnumberedsubsec">logoplatform</h4> +<a name="index-logoplatform"></a> + +<div class="example"> +<pre class="example">LOGOPLATFORM (variable) +</pre></div> + +<p>one of the following words: <code>wxWidgets</code>, <code>X11</code>, <code>Windows</code>, +or <code>Unix-nographics</code>. +</p> + + +<hr> +<a name="INTERNATIONALIZATION"></a> +<div class="header"> +<p> +Next: <a href="usermanual.html#INDEX" accesskey="n" rel="next">INDEX</a>, Previous: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="p" rel="prev">SPECIAL VARIABLES</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="Internationalization"></a> +<h2 class="chapter">13 Internationalization</h2> + +<p>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. +</p> +<p>If you want to translate Berkeley Logo for use with another language, +there are three main things you have to do: +</p> +<div class="example"> +<pre class="example">1. Primitive names +2. Error (and other) messages +3. Documentation +</pre></div> + +<p>For primitive names, the easiest thing is to provide a startup file that +defines aliases for the English primitive names, using <code>COPYDEF</code>: +</p> +<div class="example"> +<pre class="example">COPYDEF "AVANT "FORWARD +</pre></div> + +<p>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 <code>REDEFP</code> on and be sure to copy the non-conflicting name +before overwriting the conflicting one! +</p> +<p>"Primitives" that are actually in the Logo library, of course, can just +be replaced or augmented with native-language-named Logo procedures and +filenames. +</p> +<p>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. +</p> +<p>For error messages, there is a file named <samp>Messages</samp> in the +<samp>logolib</samp> 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 <code>%p</code>, +<code>%s</code>, and <code>%t</code> in these messages represent variable parts of the +message and should not be translated. (%p <code>PRINT</code>s the variable part, +while %s <code>SHOW</code>s 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 the order of +two variable parts (no reorderable message has more than two), you would for +example replace the line +</p> +<div class="example"> +<pre class="example">%p doesn't like %s as input +</pre></div> + +<p>with +</p> +<div class="example"> +<pre class="example">%+s is a lousy input to %p +</pre></div> + +<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 <code>\n</code> in a message +represents a newline; don’t be fooled into thinking that the <code>n</code> is part +of the following word. +</p> +<p>Some messages appear twice in the file; this isn’t a mistake. The two spaces +before <code>to</code> in <code>I don't know how\ \ to</code> aren’t a mistake either. +The message containing just <code>%p</code> is for user-provided error messages in +<code>THROW "ERROR</code><!-- /@w -->. The message "<code>\ \ in %s\n%s</code>" 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 <code>in</code> to your language. +<code>%s defined\n</code><!-- /@w --> is what <code>LOAD</code> prints for each procedure defined +if the variable <code>LOADNOISILY</code> is <code>TRUE</code>. +"<code>to %p\nend\n\n</code>"<!-- /@w --> is what <code>EDIT</code> puts in the temporary file if +you ask to edit a procedure that isn’t already defined. +</p> +<p>Also in the <samp>Messages</samp> file are lines containing only one word each; the +first of these is the word <code>true</code>. Some of these words are recognized by +Logo in user input; some are generated by Logo; some are both. For example, +the words <code>TRUE</code> and <code>FALSE</code> are recognized as Boolean values by +<code>IF</code> and <code>IFELSE</code>, and are also generated by Logo as outputs from +the primitive predicates such as <code>EQUALP</code>. The word <code>END</code> is +recognized as the end of a procedure definition, and may be generated when +Logo reconstructs a procedure body for <code>PO</code> or <code>EDIT</code>. I’ve used +capital letters in this paragraph for easier reading, but the words in the +<samp>Messages</samp> file should be in lower case. +</p> +<p>If you replace these with non-English words, Logo will <em>recognize</em> both the +English names and your alternate names. For example, if you replace the +word <code>true</code> with <code>vrai</code> then Logo will understand both of these: +</p> +<div class="example"> +<pre class="example">IF "TRUE [PRINT "YES] +IF "VRAI [PRINT "YES] +</pre></div> + +<p>The variable <code>UseAlternateNames</code> determines whether Logo will +<em>generate</em> other-language names – for example, whether predicate +functions return the other-language alternates for <code>TRUE</code> and +<code>FALSE</code>. This variable is <code>FALSE</code> by default, meaning that the +English words will be generated. +</p> +<p>You might wish to have English-named predicate functions generate English +<code>TRUE</code> and <code>FALSE</code>, while other-language-named predicates generate +the alternate words. This can be done by leaving <code>UseAlternateNames</code> +false, and instead of defining the other-language predicates with +<code>COPYDEF</code>, do it this way: +</p> +<div class="example"> +<pre class="example">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 + apply ,[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 +true +</pre></div> + +<p>The third input to <code>make.french.predicate</code> is the number of inputs that +the predicate expects. This solution isn’t quite perfect because the infix +predicates (<code>=</code>, <code><</code>, <code>></code>) will still output in English. If +you want them to generate alternate-language words, set +<code>UseAlternateNames</code> to <code>TRUE</code> instead. +</p> +<p>Some of the words in this section of the <samp>Messages</samp> file are names of +Logo primitives (<code>OUTPUT</code>, <code>STOP</code>, <code>GOTO</code>, <code>TAG</code>, +<code>IF</code>, <code>IFELSE</code>, <code>TO</code>, <code>.MACRO</code>). To translate these +names, you must use <code>COPYDEF</code> as described earlier, in addition to +changing the names in <samp>Messages</samp>. You should be consistent in these two +steps. Don’t forget the period in <code>.macro</code>! +</p> +<p>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 <code>makefile.c</code> may require modification +because a few of the primitive names are special cases (e.g., <code>LOG10</code> is +the only name with digits included). +</p> +<p>If you don’t have Unix tools, you can just translate each helpfile +individually. A period in a primitive name is represented as a <code>D</code> in +the filename; there are no files for question marks because the <code>HELP</code> +command looks for the file named after the corresponding primitive +that ends in <code>P</code>. +</p> + +<hr> +<a name="INDEX"></a> +<div class="header"> +<p> +Previous: <a href="usermanual.html#INTERNATIONALIZATION" accesskey="p" rel="prev">INTERNATIONALIZATION</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p> +</div> +<a name="INDEX-1"></a> +<h2 class="unnumbered">INDEX</h2> + +<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-1"><b>*</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-2"><b>+</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-3"><b>-</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-4"><b>.</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-5"><b>/</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-6"><b><</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-7"><b>=</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-8"><b>></b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-9"><b>`</b></a> + +<br> +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-A"><b>A</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-B"><b>B</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-C"><b>C</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-D"><b>D</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-E"><b>E</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-F"><b>F</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-G"><b>G</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-H"><b>H</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-I"><b>I</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-K"><b>K</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-L"><b>L</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-M"><b>M</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-N"><b>N</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-O"><b>O</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-P"><b>P</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-Q"><b>Q</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-R"><b>R</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-S"><b>S</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-T"><b>T</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-U"><b>U</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-V"><b>V</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-W"><b>W</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-X"><b>X</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-Y"><b>Y</b></a> + +</td></tr></table> +<table class="index-cp" border="0"> +<tr><td></td><th align="left">Index Entry</th><td> </td><th align="left"> Section</th></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-1">*</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002a">*</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRODUCT">PRODUCT</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-2">+</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002b">+</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SUM">SUM</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-3">-</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002d">-</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DIFFERENCE">DIFFERENCE</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-4">.</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002edefmacro">.defmacro</a>:</td><td> </td><td valign="top"><a href="usermanual.html#dMACRO">dMACRO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002eeq">.eq</a>:</td><td> </td><td valign="top"><a href="usermanual.html#dEQ">dEQ</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002emacro">.macro</a>:</td><td> </td><td valign="top"><a href="usermanual.html#dMACRO">dMACRO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002emaybeoutput">.maybeoutput</a>:</td><td> </td><td valign="top"><a href="usermanual.html#dMAYBEOUTPUT">dMAYBEOUTPUT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002esetbf">.setbf</a>:</td><td> </td><td valign="top"><a href="usermanual.html#dSETBF">dSETBF</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002esetfirst">.setfirst</a>:</td><td> </td><td valign="top"><a href="usermanual.html#dSETFIRST">dSETFIRST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002esetitem">.setitem</a>:</td><td> </td><td valign="top"><a href="usermanual.html#dSETITEM">dSETITEM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002esetsegmentsize">.setsegmentsize</a>:</td><td> </td><td valign="top"><a href="usermanual.html#g_t_002eSETSEGMENTSIZE">.SETSEGMENTSIZE</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-5">/</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_002f">/</a>:</td><td> </td><td valign="top"><a href="usermanual.html#QUOTIENT">QUOTIENT</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-6"><</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_003c"><</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LESSP">LESSP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_003c_003d"><=</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LESSEQUALP">LESSEQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_003c_003e"><></a>:</td><td> </td><td valign="top"><a href="usermanual.html#NOTEQUALP">NOTEQUALP</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-7">=</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_003d">=</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EQUALP">EQUALP</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-8">></a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_003e">></a>:</td><td> </td><td valign="top"><a href="usermanual.html#GREATERP">GREATERP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_003e_003d">>=</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GREATEREQUALP">GREATEREQUALP</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_symbol-9">`</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-_0060">‘</a>:</td><td> </td><td valign="top"><a href="usermanual.html#back_002dquote">back-quote</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-A">A</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-allopen">allopen</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ALLOPEN">ALLOPEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-AllowGetSet">AllowGetSet</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX">GETTER/SETTER VARIBLE SYNTAX</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-allowgetset">allowgetset</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ALLOWGETSET">ALLOWGETSET</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-and">and</a>:</td><td> </td><td valign="top"><a href="usermanual.html#AND">AND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-apply">apply</a>:</td><td> </td><td valign="top"><a href="usermanual.html#APPLY">APPLY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-arc">arc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ARC">ARC</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-arctan">arctan</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ARCTAN">ARCTAN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-arity">arity</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ARITY">ARITY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-array">array</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ARRAY">ARRAY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-array_003f">array?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ARRAYP">ARRAYP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-arrayp">arrayp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ARRAYP">ARRAYP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-arraytolist">arraytolist</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ARRAYTOLIST">ARRAYTOLIST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ascii">ascii</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ASCII">ASCII</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ashift">ashift</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ASHIFT">ASHIFT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ask">ask</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ASK">ASK</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-B">B</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-back">back</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BACK">BACK</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-background">background</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BACKGROUND">BACKGROUND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-before_003f">before?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BEFOREP">BEFOREP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-beforep">beforep</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BEFOREP">BEFOREP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bf">bf</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTFIRST">BUTFIRST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bfs">bfs</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTFIRSTS">BUTFIRSTS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bg">bg</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BACKGROUND">BACKGROUND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bitand">bitand</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BITAND">BITAND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bitnot">bitnot</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BITNOT">BITNOT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bitor">bitor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BITOR">BITOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bitxor">bitxor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BITXOR">BITXOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bk">bk</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BACK">BACK</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bl">bl</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTLAST">BUTLAST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-buried">buried</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BURIED">BURIED</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-buried_003f">buried?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BURIEDP">BURIEDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-buriedp">buriedp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BURIEDP">BURIEDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bury">bury</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BURY">BURY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-buryall">buryall</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BURYALL">BURYALL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-buryname">buryname</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BURYNAME">BURYNAME</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-butfirst">butfirst</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTFIRST">BUTFIRST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-butfirsts">butfirsts</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTFIRSTS">BUTFIRSTS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-butlast">butlast</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTLAST">BUTLAST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-button">button</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTTON">BUTTON</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-button_003f">button?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTTONP">BUTTONP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-buttonact">buttonact</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTTONACT">BUTTONACT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-buttonp">buttonp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BUTTONP">BUTTONP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-bye">bye</a>:</td><td> </td><td valign="top"><a href="usermanual.html#BYE">BYE</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-C">C</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-cascade">cascade</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CASCADE">CASCADE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-cascade_002e2">cascade.2</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CASCADEd2">CASCADEd2</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-case">case</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CASE">CASE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-case_002dinsensitive">case-insensitive</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-caseignoredp">caseignoredp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CASEIGNOREDP">CASEIGNOREDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-catch">catch</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CATCH">CATCH</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-char">char</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CHAR">CHAR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-clean">clean</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CLEAN">CLEAN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-clearscreen">clearscreen</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CLEARSCREEN">CLEARSCREEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-cleartext">cleartext</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CLEARTEXT">CLEARTEXT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-clickpos">clickpos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CLICKPOS">CLICKPOS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-close">close</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CLOSE">CLOSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-closeall">closeall</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CLOSEALL">CLOSEALL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-co">co</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CONTINUE">CONTINUE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-combine">combine</a>:</td><td> </td><td valign="top"><a href="usermanual.html#COMBINE">COMBINE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-commandline">commandline</a>:</td><td> </td><td valign="top"><a href="usermanual.html#COMMANDLINE">COMMANDLINE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-comments">comments</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-Computer_005fScience_005fLogo_005fStyle">Computer_Science_Logo_Style</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OVERVIEW">OVERVIEW</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-cond">cond</a>:</td><td> </td><td valign="top"><a href="usermanual.html#COND">COND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-contents">contents</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CONTENTS">CONTENTS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-continue">continue</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CONTINUE">CONTINUE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-copydef">copydef</a>:</td><td> </td><td valign="top"><a href="usermanual.html#COPYDEF">COPYDEF</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-Copyright">Copyright</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OVERVIEW">OVERVIEW</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-cos">cos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#COS">COS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-count">count</a>:</td><td> </td><td valign="top"><a href="usermanual.html#COUNT">COUNT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-crossmap">crossmap</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CROSSMAP">CROSSMAP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-cs">cs</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CLEARSCREEN">CLEARSCREEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-cslsload">cslsload</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CSLSLOAD">CSLSLOAD</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ct">ct</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CLEARTEXT">CLEARTEXT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-cursor">cursor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#CURSOR">CURSOR</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-D">D</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-decreasefont">decreasefont</a>:</td><td> </td><td valign="top"><a href="usermanual.html#INCREASEFONT">INCREASEFONT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-define">define</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DEFINE">DEFINE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-defined_003f">defined?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DEFINEDP">DEFINEDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-definedp">definedp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DEFINEDP">DEFINEDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-delimiters">delimiters</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-dequeue">dequeue</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DEQUEUE">DEQUEUE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-difference">difference</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DIFFERENCE">DIFFERENCE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-do_002euntil">do.until</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DOdUNTIL">DOdUNTIL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-do_002ewhile">do.while</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DOdWHILE">DOdWHILE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-dribble">dribble</a>:</td><td> </td><td valign="top"><a href="usermanual.html#DRIBBLE">DRIBBLE</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-E">E</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ed">ed</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDIT">EDIT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-edall">edall</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDALL">EDALL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-edit">edit</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDIT">EDIT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-editfile">editfile</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDITFILE">EDITFILE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-editor">editor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDIT">EDIT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-edn">edn</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDN">EDN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-edns">edns</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDNS">EDNS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-edpl">edpl</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDPL">EDPL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-edpls">edpls</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDPLS">EDPLS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-edps">edps</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDPS">EDPS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-empty_003f">empty?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EMPTYP">EMPTYP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-emptyp">emptyp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EMPTYP">EMPTYP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-eof_003f">eof?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EOFP">EOFP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-eofp">eofp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EOFP">EOFP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-epspict">epspict</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EPSPICT">EPSPICT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-equal_003f">equal?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EQUALP">EQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-equalp">equalp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EQUALP">EQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-er">er</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERASE">ERASE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erall">erall</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERALL">ERALL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erase">erase</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERASE">ERASE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erasefile">erasefile</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERASEFILE">ERASEFILE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erf">erf</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERASEFILE">ERASEFILE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ern">ern</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERN">ERN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erns">erns</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERNS">ERNS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erpl">erpl</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERPL">ERPL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erpls">erpls</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERPLS">ERPLS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erps">erps</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERPS">ERPS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-erract">erract</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERRACT">ERRACT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-error">error</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERROR">ERROR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-errors">errors</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ERROR-CODES">ERROR CODES</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-exist">exist</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EXIST">EXIST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-exp">exp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EXP">EXP</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-F">F</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-fd">fd</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FORWARD">FORWARD</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-fence">fence</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FENCE">FENCE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-file_003f">file?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FILEP">FILEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-filep">filep</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FILEP">FILEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-fill">fill</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FILL">FILL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-filled">filled</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FILLED">FILLED</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-filter">filter</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FILTER">FILTER</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-find">find</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FIND">FIND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-first">first</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FIRST">FIRST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-firsts">firsts</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FIRSTS">FIRSTS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-font">font</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FONT">FONT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-for">for</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FOR">FOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-foreach">foreach</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FOREACH">FOREACH</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-forever">forever</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FOREVER">FOREVER</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-form">form</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FORM">FORM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-forward">forward</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FORWARD">FORWARD</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-fput">fput</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FPUT">FPUT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-fs">fs</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FULLSCREEN">FULLSCREEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-fullprintp">fullprintp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FULLPRINTP">FULLPRINTP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-fullscreen">fullscreen</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FULLSCREEN">FULLSCREEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-fulltext">fulltext</a>:</td><td> </td><td valign="top"><a href="usermanual.html#FULLTEXT">FULLTEXT</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-G">G</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-gc">gc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GC">GC</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-gensym">gensym</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GENSYM">GENSYM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-getter">getter</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX">GETTER/SETTER VARIBLE SYNTAX</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-global">global</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GLOBAL">GLOBAL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-goto">goto</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GOTO">GOTO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-gprop">gprop</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GPROP">GPROP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-greater_003f">greater?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GREATERP">GREATERP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-greaterequal_003f">greaterequal?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GREATEREQUALP">GREATEREQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-greaterequalp">greaterequalp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GREATEREQUALP">GREATEREQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-greaterp">greaterp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GREATERP">GREATERP</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-H">H</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-have">have</a>:</td><td> </td><td valign="top"><a href="usermanual.html#HAVE">HAVE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-havemake">havemake</a>:</td><td> </td><td valign="top"><a href="usermanual.html#HAVEMAKE">HAVEMAKE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-heading">heading</a>:</td><td> </td><td valign="top"><a href="usermanual.html#HEADING">HEADING</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-help">help</a>:</td><td> </td><td valign="top"><a href="usermanual.html#HELP">HELP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-hideturtle">hideturtle</a>:</td><td> </td><td valign="top"><a href="usermanual.html#HIDETURTLE">HIDETURTLE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-home">home</a>:</td><td> </td><td valign="top"><a href="usermanual.html#HOME">HOME</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ht">ht</a>:</td><td> </td><td valign="top"><a href="usermanual.html#HIDETURTLE">HIDETURTLE</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-I">I</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-if">if</a>:</td><td> </td><td valign="top"><a href="usermanual.html#IF">IF</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ifelse">ifelse</a>:</td><td> </td><td valign="top"><a href="usermanual.html#IFELSE">IFELSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-iff">iff</a>:</td><td> </td><td valign="top"><a href="usermanual.html#IFFALSE">IFFALSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-iffalse">iffalse</a>:</td><td> </td><td valign="top"><a href="usermanual.html#IFFALSE">IFFALSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ift">ift</a>:</td><td> </td><td valign="top"><a href="usermanual.html#IFTRUE">IFTRUE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-iftrue">iftrue</a>:</td><td> </td><td valign="top"><a href="usermanual.html#IFTRUE">IFTRUE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ignore">ignore</a>:</td><td> </td><td valign="top"><a href="usermanual.html#IGNORE">IGNORE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-increasefont">increasefont</a>:</td><td> </td><td valign="top"><a href="usermanual.html#INCREASEFONT">INCREASEFONT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-int">int</a>:</td><td> </td><td valign="top"><a href="usermanual.html#INT">INT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-invoke">invoke</a>:</td><td> </td><td valign="top"><a href="usermanual.html#INVOKE">INVOKE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-iseq">iseq</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ISEQ">ISEQ</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-item">item</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ITEM">ITEM</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-K">K</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-key_003f">key?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#KEYP">KEYP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-keyact">keyact</a>:</td><td> </td><td valign="top"><a href="usermanual.html#KEYACT">KEYACT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-keyp">keyp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#KEYP">KEYP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-kindof">kindof</a>:</td><td> </td><td valign="top"><a href="usermanual.html#KINDOF">KINDOF</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-L">L</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-label">label</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LABEL">LABEL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-labelsize">labelsize</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LABELSIZE">LABELSIZE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-last">last</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LAST">LAST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-leaving-ucblogo">leaving <tt>ucblogo</tt></a>:</td><td> </td><td valign="top"><a href="usermanual.html#ENTERING-AND-LEAVING-LOGO">ENTERING AND LEAVING LOGO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-left">left</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LEFT">LEFT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-less_003f">less?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LESSP">LESSP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-lessequal_003f">lessequal?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LESSEQUALP">LESSEQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-lessequalp">lessequalp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LESSEQUALP">LESSEQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-lessp">lessp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LESSP">LESSP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-line_002dcontinuation">line-continuation</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-line_003f">line?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LINEP">LINEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-linep">linep</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LINEP">LINEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-list">list</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LIST">LIST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-list_003f">list?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LISTP">LISTP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-listp">listp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LISTP">LISTP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-listtoarray">listtoarray</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LISTTOARRAY">LISTTOARRAY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ln">ln</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LN">LN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-load">load</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOAD">LOAD</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-loadnoisily">loadnoisily</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOADNOISILY">LOADNOISILY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-loadpict">loadpict</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOADPICT">LOADPICT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-local">local</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOCAL">LOCAL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-localmake">localmake</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOCALMAKE">LOCALMAKE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-log10">log10</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOG10">LOG10</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-logohelp">logohelp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#HELP">HELP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-logoplatform">logoplatform</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOGOPLATFORM">LOGOPLATFORM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-logoversion">logoversion</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOGOVERSION">LOGOVERSION</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-lowercase">lowercase</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LOWERCASE">LOWERCASE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-lput">lput</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LPUT">LPUT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-lshift">lshift</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LSHIFT">LSHIFT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-lt">lt</a>:</td><td> </td><td valign="top"><a href="usermanual.html#LEFT">LEFT</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-M">M</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-macro_003f">macro?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MACROP">MACROP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-macroexpand">macroexpand</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MACROEXPAND">MACROEXPAND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-macrop">macrop</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MACROP">MACROP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-make">make</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MAKE">MAKE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-map">map</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MAP">MAP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-map_002ese">map.se</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MAPdSE">MAPdSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-mdarray">mdarray</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MDARRAY">MDARRAY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-mditem">mditem</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MDITEM">MDITEM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-mdsetitem">mdsetitem</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MDSETITEM">MDSETITEM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-member">member</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MEMBER">MEMBER</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-member_003f">member?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MEMBERP">MEMBERP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-memberp">memberp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MEMBERP">MEMBERP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-minus">minus</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MINUS">MINUS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-modulo">modulo</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MODULO">MODULO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-mousepos">mousepos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MOUSEPOS">MOUSEPOS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-myname_003f">myname?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MYNAMEP">MYNAMEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-mynamep">mynamep</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MYNAMEP">MYNAMEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-mynames">mynames</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MYNAMES">MYNAMES</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-myproc_003f">myproc?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MYPROCP">MYPROCP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-myprocp">myprocp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MYPROCP">MYPROCP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-myprocs">myprocs</a>:</td><td> </td><td valign="top"><a href="usermanual.html#MYPROCS">MYPROCS</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-N">N</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-name">name</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NAME">NAME</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-name_003f">name?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NAMEP">NAMEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-namelist">namelist</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NAMELIST">NAMELIST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-namep">namep</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NAMEP">NAMEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-names">names</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NAMES">NAMES</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-nodes">nodes</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NODES">NODES</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-nodribble">nodribble</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NODRIBBLE">NODRIBBLE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-norefresh">norefresh</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NOREFRESH">NOREFRESH</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-not">not</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NOT">NOT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-notequal_003f">notequal?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NOTEQUALP">NOTEQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-notequalp">notequalp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NOTEQUALP">NOTEQUALP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-number_003f">number?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NUMBERP">NUMBERP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-numberp">numberp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#NUMBERP">NUMBERP</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-O">O</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-oneof">oneof</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ONEOF">ONEOF</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-op">op</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OUTPUT">OUTPUT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-openappend">openappend</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OPENAPPEND">OPENAPPEND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-openread">openread</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OPENREAD">OPENREAD</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-openupdate">openupdate</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OPENUPDATE">OPENUPDATE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-openwrite">openwrite</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OPENWRITE">OPENWRITE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-or">or</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OR">OR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-output">output</a>:</td><td> </td><td valign="top"><a href="usermanual.html#OUTPUT">OUTPUT</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-P">P</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-palette">palette</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PALETTE">PALETTE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-parents">parents</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PARENTS">PARENTS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-parse">parse</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PARSE">PARSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pause">pause</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PAUSE">PAUSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pc">pc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENCOLOR">PENCOLOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pd">pd</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENDOWN">PENDOWN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pe">pe</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENERASE">PENERASE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pen">pen</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PEN">PEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pencolor">pencolor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENCOLOR">PENCOLOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pendown">pendown</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENDOWN">PENDOWN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pendown_003f">pendown?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENDOWNP">PENDOWNP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pendownp">pendownp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENDOWNP">PENDOWNP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-penerase">penerase</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENERASE">PENERASE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-penmode">penmode</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENMODE">PENMODE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-penpaint">penpaint</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENPAINT">PENPAINT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-penpattern">penpattern</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENSIZE">PENSIZE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-penreverse">penreverse</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENREVERSE">PENREVERSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pensize">pensize</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENSIZE">PENSIZE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-penup">penup</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENUP">PENUP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pick">pick</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PICK">PICK</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-plist">plist</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PLIST">PLIST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-plist_003f">plist?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PLISTP">PLISTP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-plistp">plistp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PLISTP">PLISTP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-plists">plists</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PLISTS">PLISTS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pllist">pllist</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PLLIST">PLLIST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-po">po</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PO">PO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-poall">poall</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POALL">POALL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pon">pon</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PON">PON</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pons">pons</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PONS">PONS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pop">pop</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POP">POP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-popl">popl</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POPL">POPL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-popls">popls</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POPLS">POPLS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pops">pops</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POPS">POPS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pos">pos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POS">POS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pot">pot</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POT">POT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pots">pots</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POTS">POTS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-power">power</a>:</td><td> </td><td valign="top"><a href="usermanual.html#POWER">POWER</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pprop">pprop</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PPROP">PPROP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ppt">ppt</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENPAINT">PENPAINT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pr">pr</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRINT">PRINT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-prefix">prefix</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PREFIX">PREFIX</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-primitive_003f">primitive?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRIMITIVEP">PRIMITIVEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-primitivep">primitivep</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRIMITIVEP">PRIMITIVEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-primitives">primitives</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRIMITIVES">PRIMITIVES</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-print">print</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRINT">PRINT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-printdepthlimit">printdepthlimit</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRINTDEPTHLIMIT">PRINTDEPTHLIMIT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-printout">printout</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PO">PO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-printwidthlimit">printwidthlimit</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRINTWIDTHLIMIT">PRINTWIDTHLIMIT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-procedure_003f">procedure?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PROCEDUREP">PROCEDUREP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-procedurep">procedurep</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PROCEDUREP">PROCEDUREP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-procedures">procedures</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PROCEDURES">PROCEDURES</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-product">product</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PRODUCT">PRODUCT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-pu">pu</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENUP">PENUP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-push">push</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PUSH">PUSH</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-px">px</a>:</td><td> </td><td valign="top"><a href="usermanual.html#PENREVERSE">PENREVERSE</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-Q">Q</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-queue">queue</a>:</td><td> </td><td valign="top"><a href="usermanual.html#QUEUE">QUEUE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-quoted">quoted</a>:</td><td> </td><td valign="top"><a href="usermanual.html#QUOTED">QUOTED</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-quotient">quotient</a>:</td><td> </td><td valign="top"><a href="usermanual.html#QUOTIENT">QUOTIENT</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-R">R</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-radarctan">radarctan</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RADARCTAN">RADARCTAN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-radcos">radcos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RADCOS">RADCOS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-radsin">radsin</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RADSIN">RADSIN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-random">random</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RANDOM">RANDOM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-rawascii">rawascii</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RAWASCII">RAWASCII</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-rc">rc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READCHAR">READCHAR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-rcs">rcs</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READCHARS">READCHARS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-readchar">readchar</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READCHAR">READCHAR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-readchars">readchars</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READCHARS">READCHARS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-reader">reader</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READER">READER</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-readlist">readlist</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READLIST">READLIST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-readpos">readpos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READPOS">READPOS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-readrawline">readrawline</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READRAWLINE">READRAWLINE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-readword">readword</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READWORD">READWORD</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-redefp">redefp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REDEFP">REDEFP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-reduce">reduce</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REDUCE">REDUCE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-refresh">refresh</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REFRESH">REFRESH</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-remainder">remainder</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REMAINDER">REMAINDER</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-remdup">remdup</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REMDUP">REMDUP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-remove">remove</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REMOVE">REMOVE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-remprop">remprop</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REMPROP">REMPROP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-repcount">repcount</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REPCOUNT">REPCOUNT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-repeat">repeat</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REPEAT">REPEAT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-rerandom">rerandom</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RERANDOM">RERANDOM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-reverse">reverse</a>:</td><td> </td><td valign="top"><a href="usermanual.html#REVERSE">REVERSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-right">right</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RIGHT">RIGHT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-rl">rl</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READLIST">READLIST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-round">round</a>:</td><td> </td><td valign="top"><a href="usermanual.html#ROUND">ROUND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-rseq">rseq</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RSEQ">RSEQ</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-rt">rt</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RIGHT">RIGHT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-run">run</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RUN">RUN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-runparse">runparse</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RUNPARSE">RUNPARSE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-runparsing">runparsing</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-runresult">runresult</a>:</td><td> </td><td valign="top"><a href="usermanual.html#RUNRESULT">RUNRESULT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-rw">rw</a>:</td><td> </td><td valign="top"><a href="usermanual.html#READWORD">READWORD</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-S">S</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-save">save</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SAVE">SAVE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-savel">savel</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SAVEL">SAVEL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-savepict">savepict</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SAVEPICT">SAVEPICT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-screenmode">screenmode</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SCREENMODE">SCREENMODE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-scrunch">scrunch</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SCRUNCH">SCRUNCH</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-scrunch_002edat">scrunch.dat</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETSCRUNCH">SETSCRUNCH</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-se">se</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SENTENCE">SENTENCE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-self">self</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SELF">SELF</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-sentence">sentence</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SENTENCE">SENTENCE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setbackground">setbackground</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETBACKGROUND">SETBACKGROUND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setbg">setbg</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETBACKGROUND">SETBACKGROUND</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setcslsloc">setcslsloc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETCSLSLOC">SETCSLSLOC</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setcursor">setcursor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETCURSOR">SETCURSOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-seteditor">seteditor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETEDITOR">SETEDITOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setfont">setfont</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETFONT">SETFONT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-seth">seth</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETHEADING">SETHEADING</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setheading">setheading</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETHEADING">SETHEADING</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-sethelploc">sethelploc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETHELPLOC">SETHELPLOC</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setitem">setitem</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETITEM">SETITEM</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setlabelheight">setlabelheight</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETLABELHEIGHT">SETLABELHEIGHT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setlibloc">setlibloc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETLIBLOC">SETLIBLOC</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setmargins">setmargins</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETMARGINS">SETMARGINS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setpalette">setpalette</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETPALETTE">SETPALETTE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setpc">setpc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETPENCOLOR">SETPENCOLOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setpen">setpen</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETPEN">SETPEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setpencolor">setpencolor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETPENCOLOR">SETPENCOLOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setpenpattern">setpenpattern</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETPENPATTERN">SETPENPATTERN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setpensize">setpensize</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETPENSIZE">SETPENSIZE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setpos">setpos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETPOS">SETPOS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setprefix">setprefix</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETPREFIX">SETPREFIX</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setread">setread</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETREAD">SETREAD</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setreadpos">setreadpos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETREADPOS">SETREADPOS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setscrunch">setscrunch</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETSCRUNCH">SETSCRUNCH</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-settc">settc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETTEXTCOLOR">SETTEXTCOLOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-settemploc">settemploc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETTEMPLOC">SETTEMPLOC</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setter">setter</a>:</td><td> </td><td valign="top"><a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX">GETTER/SETTER VARIBLE SYNTAX</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-settextcolor">settextcolor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETTEXTCOLOR">SETTEXTCOLOR</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-settextsize">settextsize</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETTEXTSIZE">SETTEXTSIZE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setwrite">setwrite</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETWRITE">SETWRITE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setwritepos">setwritepos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETWRITEPOS">SETWRITEPOS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setx">setx</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETX">SETX</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-setxy">setxy</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETXY">SETXY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-sety">sety</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SETY">SETY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-shell">shell</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SHELL">SHELL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-show">show</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SHOW">SHOW</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-shown_003f">shown?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SHOWNP">SHOWNP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-shownp">shownp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SHOWNP">SHOWNP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-showturtle">showturtle</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SHOWTURTLE">SHOWTURTLE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-sin">sin</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SIN">SIN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-something">something</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SOMETHING">SOMETHING</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-splitscreen">splitscreen</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SPLITSCREEN">SPLITSCREEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-sqrt">sqrt</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SQRT">SQRT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ss">ss</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SPLITSCREEN">SPLITSCREEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-st">st</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SHOWTURTLE">SHOWTURTLE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-standout">standout</a>:</td><td> </td><td valign="top"><a href="usermanual.html#STANDOUT">STANDOUT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-starting-ucblogo">starting <tt>ucblogo</tt></a>:</td><td> </td><td valign="top"><a href="usermanual.html#ENTERING-AND-LEAVING-LOGO">ENTERING AND LEAVING LOGO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-startup">startup</a>:</td><td> </td><td valign="top"><a href="usermanual.html#STARTUP">STARTUP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-step">step</a>:</td><td> </td><td valign="top"><a href="usermanual.html#STEP">STEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-stepped">stepped</a>:</td><td> </td><td valign="top"><a href="usermanual.html#STEPPED">STEPPED</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-stepped_003f">stepped?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#STEPPEDP">STEPPEDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-steppedp">steppedp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#STEPPEDP">STEPPEDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-stop">stop</a>:</td><td> </td><td valign="top"><a href="usermanual.html#STOP">STOP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-substring_003f">substring?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SUBSTRINGP">SUBSTRINGP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-substringp">substringp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SUBSTRINGP">SUBSTRINGP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-sum">sum</a>:</td><td> </td><td valign="top"><a href="usermanual.html#SUM">SUM</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-T">T</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-tag">tag</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TAG">TAG</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-talkto">talkto</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TALKTO">TALKTO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-temp">temp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#EDIT">EDIT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-template">template</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TEMPLATE_002dBASED-ITERATION">TEMPLATE-BASED ITERATION</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-test">test</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TEST">TEST</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-text">text</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TEXT">TEXT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-textscreen">textscreen</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TEXTSCREEN">TEXTSCREEN</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-textsize">textsize</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TEXTSIZE">TEXTSIZE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-thing">thing</a>:</td><td> </td><td valign="top"><a href="usermanual.html#THING">THING</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-throw">throw</a>:</td><td> </td><td valign="top"><a href="usermanual.html#THROW">THROW</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-to">to</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TO">TO</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-towards">towards</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TOWARDS">TOWARDS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-trace">trace</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TRACE">TRACE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-traced">traced</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TRACED">TRACED</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-traced_003f">traced?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TRACEDP">TRACEDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-tracedp">tracedp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TRACEDP">TRACEDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-transfer">transfer</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TRANSFER">TRANSFER</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-turtlemode">turtlemode</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TURTLEMODE">TURTLEMODE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-type">type</a>:</td><td> </td><td valign="top"><a href="usermanual.html#TYPE">TYPE</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-U">U</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-unbury">unbury</a>:</td><td> </td><td valign="top"><a href="usermanual.html#UNBURY">UNBURY</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-unburyall">unburyall</a>:</td><td> </td><td valign="top"><a href="usermanual.html#UNBURYALL">UNBURYALL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-unburyname">unburyname</a>:</td><td> </td><td valign="top"><a href="usermanual.html#UNBURYNAME">UNBURYNAME</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-unburyonedit">unburyonedit</a>:</td><td> </td><td valign="top"><a href="usermanual.html#UNBURYONEDIT">UNBURYONEDIT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-unstep">unstep</a>:</td><td> </td><td valign="top"><a href="usermanual.html#UNSTEP">UNSTEP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-until">until</a>:</td><td> </td><td valign="top"><a href="usermanual.html#UNTIL">UNTIL</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-untrace">untrace</a>:</td><td> </td><td valign="top"><a href="usermanual.html#UNTRACE">UNTRACE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-uppercase">uppercase</a>:</td><td> </td><td valign="top"><a href="usermanual.html#UPPERCASE">UPPERCASE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-usealternatenames">usealternatenames</a>:</td><td> </td><td valign="top"><a href="usermanual.html#USEALTERNATENAMES">USEALTERNATENAMES</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-usual">usual</a>:</td><td> </td><td valign="top"><a href="usermanual.html#USUAL">USUAL</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-V">V</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-vbarred_003f">vbarred?</a>:</td><td> </td><td valign="top"><a href="usermanual.html#VBARREDP">VBARREDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-vbarredp">vbarredp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#VBARREDP">VBARREDP</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-W">W</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-wait">wait</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WAIT">WAIT</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-while">while</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WHILE">WHILE</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-whosename">whosename</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WHOSENAME">WHOSENAME</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-whoseproc">whoseproc</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WHOSEPROC">WHOSEPROC</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-window">window</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WINDOW">WINDOW</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-word">word</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WORD">WORD</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-wordp">wordp</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WORDP">WORDP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-wrap">wrap</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WRAP">WRAP</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-writepos">writepos</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WRITEPOS">WRITEPOS</a></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-writer">writer</a>:</td><td> </td><td valign="top"><a href="usermanual.html#WRITER">WRITER</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-X">X</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-xcor">xcor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#XCOR">XCOR</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +<tr><th><a name="INDEX_cp_letter-Y">Y</a></th><td></td><td></td></tr> +<tr><td></td><td valign="top"><a href="usermanual.html#index-ycor">ycor</a>:</td><td> </td><td valign="top"><a href="usermanual.html#YCOR">YCOR</a></td></tr> +<tr><td colspan="4"> <hr></td></tr> +</table> +<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-1"><b>*</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-2"><b>+</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-3"><b>-</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-4"><b>.</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-5"><b>/</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-6"><b><</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-7"><b>=</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-8"><b>></b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-9"><b>`</b></a> + +<br> +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-A"><b>A</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-B"><b>B</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-C"><b>C</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-D"><b>D</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-E"><b>E</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-F"><b>F</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-G"><b>G</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-H"><b>H</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-I"><b>I</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-K"><b>K</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-L"><b>L</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-M"><b>M</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-N"><b>N</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-O"><b>O</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-P"><b>P</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-Q"><b>Q</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-R"><b>R</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-S"><b>S</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-T"><b>T</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-U"><b>U</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-V"><b>V</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-W"><b>W</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-X"><b>X</b></a> + +<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-Y"><b>Y</b></a> + +</td></tr></table> + +<div class="footnote"> +<hr> +<h4 class="footnotes-heading">Footnotes</h4> + +<h3><a name="FOOT1" href="usermanual.html#DOCF1">(1)</a></h3> +<p><cite>Computer Science Logo Style</cite></p> +</div> +<hr> + + + +</body> +</html> |