Contents......Page 3 Figures......Page 9 Tables......Page 11 Preface......Page 13 1 About Icon......Page 14 Hello, world......Page 18 Declarations......Page 20 Exiting......Page 21 Strings......Page 22 Control Constructs......Page 25 Elementary Lists......Page 26 Records......Page 30 Expression Evaluation Order......Page 32 To......Page 33 Backtracking......Page 34 Arithmetic Relational Operators......Page 35 Null & Non-Null Tests - / x & \ x......Page 36 Coevaluation......Page 37 Alternation - e1 | e2......Page 38 Repeated Alternation - | e......Page 39 Limitation - e1 \ e2......Page 40 Idiom - generate & test......Page 41 every do......Page 42 Idiom - Goal directed Evaluation......Page 43 case of { }......Page 44 while do......Page 45 Idiom - write "all do" as "not any don’t"......Page 46 repeat......Page 47 next......Page 48 Procedure Calls......Page 50 Procedure Declarations......Page 51 Return......Page 52 Suspend......Page 53 Initial......Page 54 Applying a Procedure to a List......Page 55 Functions that apply to Procedures......Page 56 String Literals......Page 58 Subscripting......Page 59 Sectioning - subscripting Ranges......Page 60 String Operators......Page 61 String editing & Conversion Functions......Page 62 Idiom - map......Page 64 Character Sets - cset......Page 65 String Scanning Functions......Page 66 Examples of Strings......Page 69 Scanning Strings......Page 72 Numeric Literals......Page 80 Operators......Page 81 Large Integers......Page 82 Bitwise Operations on Integers......Page 83 Numeric Functions......Page 84 Rational Numbers......Page 86 Random Numbers......Page 87 Matrices......Page 88 File IO......Page 90 File Names & Paths......Page 95 Character-based interactive IO......Page 99 Positions Subscripting & Subranges......Page 102 Operators......Page 103 Stacks & Queues......Page 104 Other List Functions......Page 106 Initial Value &null, \ & / Idioms......Page 108 Sort......Page 109 Functions......Page 110 Example - Word Count......Page 111 Operators......Page 114 Functions......Page 115 Examples using Sets......Page 116 Subscripting Records - r["f"] r[i]......Page 120 Record Operators......Page 121 Record Functions......Page 122 Variables & Values......Page 124 Operations on Arbitrary Types......Page 125 Built-in Conversions......Page 126 Translating Structures to Strings......Page 127 Basic Debugging......Page 130 Monitoring Storage......Page 135 Translator Commands......Page 138 Preprocessor......Page 141 Environment Inquiries......Page 142 Activating a Co-Expression......Page 144 Refreshed Copies......Page 145 p { ... }......Page 146 Windows......Page 148 Lines......Page 150 Filled Areas......Page 156 Text......Page 161 Colors......Page 165 Pixel Rectangles, Moving, Saving, Restoring......Page 173 Events......Page 174 Canvases & Graphics Contexts......Page 178 Dialogs......Page 180 Table of Attributes......Page 181 Functions & Keywords......Page 186 Icon Grammar......Page 216 Operators Table......Page 221 Biblio......Page 222