[Next] [Previous] [Top] [Index]

The Cecil Language: Specification and Rationale, Version 2.1


Abstract
1 - Introduction
1.1 - Design Goals and Major Features
1.2 - Overview
2 - Dynamically-Typed Core
2.1 - Objects and Inheritance
2.1.1 - Inheritance
2.1.2 - Object Instantiation
2.1.3 - Extension Declarations
2.1.4 - Predefined Objects
2.1.5 - Closures
2.2 - Methods
2.2.1 - Argument Specializers and Multi-Methods
2.2.2 - Method Bodies
2.2.3 - Primitive Methods
2.3 - Fields
2.3.1 - Read-Only vs. Mutable Fields
2.3.2 - Fields and Methods
2.3.3 - Copy-Down vs. Shared Fields
2.3.4 - Field Initialization
2.4 - Predicate Objects
2.4.1 - Predicate Objects and Inheritance
2.4.2 - Predicate Objects and Fields
2.5 - Statements and Expressions
2.5.1 - Declaration Blocks
2.5.2 - Variable Declarations
2.5.3 - Variable References
2.5.4 - Assignment Statements
2.5.5 - Literals
2.5.6 - Message Sends
2.5.7 - Object Constructors
2.5.8 - Vector Constructors
2.5.9 - Closures
2.5.10 - Parenthetical Subexpressions
2.6 - Precedence Declarations
2.6.1 - Previous Approaches
2.6.2 - Precedence and Associativity Declarations in Cecil
2.7 - Method Lookup
2.7.1 - Philosophy
2.7.2 - Semantics
2.7.3 - Examples
2.7.4 - Strengths and Limitations
2.7.5 - Multiple Inheritance of Fields
2.7.6 - Cyclic Inheritance
2.7.7 - Method Lookup and Lexical Scoping
2.7.8 - Method Invocation
2.8 - Resends
2.9 - Files and Include Declarations
2.10 - Pragmas
3 - Static Types
3.1 - Goals
3.2 - Types and Signatures
3.3 - Type and Signature Declarations
3.3.1 - Type Declarations
3.3.2 - Representation and Object Declarations
3.3.3 - Type and Object Extension Declarations
3.3.4 - Signature Declarations
3.3.5 - Implementation and Method Declarations
3.3.6 - Field Implementation Declarations
3.3.7 - Other Type Declarations
3.3.8 - Discussion
3.4 - Special Types and Type Constructors
3.4.1 - Named Types
3.4.2 - Closure Types
3.4.3 - Least-Upper-Bound Types
3.4.4 - Greatest-Lower-Bound Types
3.5 - Object Role Annotations
3.6 - Type Checking Messages
3.6.1 - Checking Messages Against Signatures
3.6.2 - Checking Signatures Against Method Implementations
3.6.3 - Comparison with Other Type Systems
3.6.4 - Type Checking Inherited Methods
3.7 - Type Checking Expressions, Statements, and Declarations
3.8 - Type Checking Subtyping Declarations
3.9 - Type Checking Predicate Objects
3.10 - Mixed Statically- and Dynamically-Typed Code
4 - Parameterization and Parametric Polymorphism
4.1 - Explicit Parameterization
4.1.1 - Parameterized Declarations and Formal Type Parameters
4.1.2 - Instantiating Parameterized Declarations
4.1.3 - Parameterized Objects and Types
4.1.4 - Method Lookup
4.1.5 - Type Checking Instantiations
4.2 - Implicit Parameterization
4.3 - Matching Against Type Patterns
4.3.1 - Method Formal Type Patterns
4.3.2 - Upper Bound Type Patterns
4.3.3 - The Matching Algorithm
4.3.4 - Static vs. Dynamic Matching
4.3.5 - Constraints on Supertype Graphs for Matching
4.3.6 - Matching and Bounded Formal Type Parameters
4.4 - Implicit Type Parameters in Extension Declarations
4.5 - Parameterized Objects and Method Lookup
4.6 - Parameterization and Syntactic Sugars
4.7 - F-Bounded Polymorphism
4.7.1 - Motivation
4.7.2 - F-Bounded Polymorphism in Singly-Dispatched Languages
4.7.3 - F-Bounded Polymorphism in Cecil
4.7.4 - F-Bounded Polymorphism among Multiple Types
5 - Modules
6 - Related Work
7 - Conclusion
Acknowledgments
References

The Cecil Language: Specification and Rationale, Version 2.1 - 25 MARCH 1997
[Next] [Previous] [Top] [Index]

Generated with Harlequin WebMaker