\contentsline {section}{\numberline {1}Introduction and Motivation}{1} \contentsline {section}{\numberline {2}Language Classification}{2} \contentsline {section}{\numberline {3}Lexical and Syntactical Rules}{3} \contentsline {subsection}{\numberline {3.1}Symbols}{3} \contentsline {subsection}{\numberline {3.2}Reserved Keywords}{4} \contentsline {subsection}{\numberline {3.3}Comments}{4} \contentsline {subsection}{\numberline {3.4}Factoring of Expressions}{4} \contentsline {subsection}{\numberline {3.5}Coercion and Overloading}{5} \contentsline {section}{\numberline {4}Predefined Values and Functions}{5} \contentsline {subsection}{\numberline {4.1}Naming, Binding, and Typing}{5} \contentsline {subsection}{\numberline {4.2}Literals}{5} \contentsline {section}{\numberline {5}User-defined Values and Functions}{6} \contentsline {subsection}{\numberline {5.1}Static Bindings}{6} \contentsline {subsection}{\numberline {5.2}Dynamic Bindings}{7} \contentsline {subsubsection}{\numberline {5.2.1}Simple Functions}{7} \contentsline {subsubsection}{\numberline {5.2.2}Recursive Functions}{9} \contentsline {subsubsection}{\numberline {5.2.3}Function Types}{9} \contentsline {subsubsection}{\numberline {5.2.4}Higher-Order Functions}{10} \contentsline {section}{\numberline {6}Predefined Value and Type Constructors}{10} \contentsline {subsection}{\numberline {6.1}Tuple Types}{10} \contentsline {subsection}{\numberline {6.2}Variant Types}{11} \contentsline {subsection}{\numberline {6.3}Record Types}{13} \contentsline {subsection}{\numberline {6.4}Recursive Data Types}{14} \contentsline {subsection}{\numberline {6.5}Dynamic Data Types}{15} \contentsline {section}{\numberline {7}Subtype Relationships and Subtype Polymorphism}{15} \contentsline {subsection}{\numberline {7.1}Subtyping on Predefined Types}{15} \contentsline {subsection}{\numberline {7.2}Subtyping on Tuple Types}{16} \contentsline {subsection}{\numberline {7.3}Subtyping on Record Types}{18} \contentsline {subsection}{\numberline {7.4}Subtyping on Function Types}{18} \contentsline {section}{\numberline {8}Parametric Polymorphism}{19} \contentsline {subsection}{\numberline {8.1}Polymorphic Functions}{19} \contentsline {subsection}{\numberline {8.2}Bounded Parametric Polymorphism}{20} \contentsline {subsection}{\numberline {8.3}Type Operators}{21} \contentsline {subsubsection}{\numberline {8.3.1}Simple Type Operators}{21} \contentsline {subsubsection}{\numberline {8.3.2}Recursive Type Operators}{22} \contentsline {subsection}{\numberline {8.4}Abstract Data Types}{23} \contentsline {section}{\numberline {9}Imperative Programming}{24} \contentsline {subsection}{\numberline {9.1}Mutable Variables}{24} \contentsline {subsection}{\numberline {9.2}Subtyping Rules for Mutable Bindings}{26} \contentsline {subsection}{\numberline {9.3}Control Structures}{26} \contentsline {subsubsection}{\numberline {9.3.1}Sequences}{27} \contentsline {subsubsection}{\numberline {9.3.2}Conditional Expressions}{27} \contentsline {subsubsection}{\numberline {9.3.3}Loops}{28} \contentsline {subsubsection}{\numberline {9.3.4}Exception Handling}{29} \contentsline {subsection}{\numberline {9.4}Arrays and Array Indexing}{31} \contentsline {section}{\numberline {10}Multi-Paradigm Programming in Tycoon}{31} \contentsline {paragraph}{Functional Encapsulation}{32} \contentsline {paragraph}{Imperative Encapsulation}{33} \contentsline {paragraph}{Method-Based Encapsulation}{33} \contentsline {section}{\numberline {11}Programming in the Large}{34} \contentsline {subsection}{\numberline {11.1}Modules and Interfaces}{34} \contentsline {subsection}{\numberline {11.2}Libraries}{36} \contentsline {section}{\numberline {12}Persistence and Garbage Collection}{37} \contentsline {section}{\numberline {13}External C Libraries}{38} \contentsline {subsection}{\numberline {13.1}Function Calls from Tycoon to External C Libraries}{38} \contentsline {subsection}{\numberline {13.2}Function Calls from External C Libraries to Tycoon}{40} \contentsline {section}{\numberline {14}Layout and Naming Conventions}{41} \contentsline {subsection}{\numberline {14.1}Spelling}{42} \contentsline {subsection}{\numberline {14.2}Punctuation}{42} \contentsline {subsection}{\numberline {14.3}Indentation}{43} \contentsline {subsection}{\numberline {14.4}Comments}{44} \contentsline {section}{\numberline {A}The TL Grammar}{45} \contentsline {subsection}{\numberline {A.1}Syntax Notations}{45} \contentsline {subsection}{\numberline {A.2}Symbols}{45} \contentsline {subsection}{\numberline {A.3}Reserved Keywords}{46} \contentsline {subsection}{\numberline {A.4}Productions}{47} \contentsline {subsubsection}{\numberline {A.4.1}Compilation Units}{47} \contentsline {subsubsection}{\numberline {A.4.2}Bindings}{47} \contentsline {subsubsection}{\numberline {A.4.3}Values}{47} \contentsline {subsubsection}{\numberline {A.4.4}Signatures}{48} \contentsline {subsubsection}{\numberline {A.4.5}Types}{48} \contentsline {subsubsection}{\numberline {A.4.6}Identifier}{49} \contentsline {section}{\numberline {B}Predefined Identifiers}{49} \contentsline {subsection}{\numberline {B.1}Type Identifiers}{49} \contentsline {subsection}{\numberline {B.2}Value Identifiers}{49} \contentsline {subsection}{\numberline {B.3}Infix Functions}{50} \contentsline {subsection}{\numberline {B.4}Functions}{50} \contentsline {subsection}{\numberline {B.5}Exceptions}{51} \contentsline {section}{Bibliography}{52} \contentsline {section}{Index}{54}