Programmers Manual

Table of Contents


1. Introduction
1.1. What is Gamma?
1.2. Assumptions about the Reader
1.3. System Requirements
1.4. Download and Installation
1.4.1. QNX 4
1.4.2. QNX 6
1.4.3. Linux
1.4.4. Installed file locations
1.4.5. Installing licenses
1.5. Cogent Product Integration
1.6. Where can I get help?

2. Getting Started
2.1. Interactive Mode
2.2. Executable Programs
2.3. Symbols and Values

3. Basic Data Types and Mechanisms
3.1. Numeric Types
3.1.1. Integer
3.1.2. Real
3.1.3. Fixed-point Real
3.1.4. Number Operators
3.2. Logical Types
3.3. Strings
3.4. Lists and Arrays
3.5. Constants
3.6. Operators and Expressions
3.7. Comments
3.8. Reserved Words
3.9. Memory Management

4. Tutorial I
4.1. Lists
4.2. "Hello world" program

5. Control Flow
5.1. Statements
5.1.1. Conditionals
5.1.2. Loops
5.1.3. Goto, Break, Continue, Return
5.2. Function Calls
5.3. Event Handling
5.3.1. Interprocess Communication Message Events
5.3.2. Timers
5.3.3. Symbol Value Events (Active Values)
5.3.4. Cascade DataHub Point Events (Exception Handlers)
5.3.5. Windowing System Events
5.3.6. Signals
5.4. Error Handling
5.4.1. Situations that might cause Gamma to crash

6. Tutorial II
6.1. Error Handling - try/catch, protect/unwind
6.2. Dynamic Scoping
6.3. Error Handling - interactive session

7. Functions and Program Structure
7.1. Function Definition
7.2. Function Arguments
7.2.1. Variable number of arguments
7.2.2. Optional arguments
7.2.3. Protection from evaluation
7.2.4. Variable, optional, unevaluated arguments
7.2.5. Examples
7.3. Function Renaming
7.4. Loading files
7.5. The main Function
7.6. Executable Programs
7.7. Running a Gamma Program
7.8. Command Line Arguments

8. Object Oriented Programming
8.1. Classes and Instances
8.1.1. Instances
8.2. Methods
8.3. Inheritance
8.4. Instance Variables
8.5. Class Variables
8.6. Constructors and Destructors
8.7. Polymorphism
8.7.1. Operator Overloading
8.8. Binary Classes and User Classes

9. Tutorial III
9.1. Classes and OOP

10. Interactive Development and Debugging
10.1. Interactive Mode Implementation
10.2. Getting On-Line Help for Functions
10.3. Examining Variables in a Class or Instance
10.4. Using the Debug Prompt
10.5. Debugging a program
10.5.1. Interacting with an Active Program
10.5.2. Trapping and Reporting Errors
10.5.3. Determining Error Location
10.5.4. Filtering Object Query Output

11. Advanced Types and Mechanisms
11.1. Symbols
11.1.1. Undefined symbols
11.1.2. Uniqueness of Symbols
11.1.3. Properties
11.1.4. Predefined Symbols
11.2. Evaluation
11.2.1. Evaluation of a Symbol
11.2.2. Evaluation of a List
11.2.3. Evaluation to Itself
11.3. Literal Syntax and Evaluation
11.3.1. Literal Expressions
11.3.2. Deferring Expression Evaluation
11.3.3. Literal Function Arguments
11.3.4. Partially Evaluated Literal
11.3.5. Constructing Variable Names at Run-time
11.3.6. Literal Array Syntax

12. Input and Output
12.1. Referencing Files
12.2. Lisp and Gamma I/O mechanisms
12.3. Writing
12.3.1. Print vs. Princ
12.3.2. Write vs. Writec
12.3.3. Terpri
12.3.4. Pretty Printing
12.3.5. Printing Circular References
12.4. Reading
12.4.1. Reading Gamma Expressions
12.4.2. Reading Arbitrary ASCII Data
12.4.3. Reading Binary Data

13. Special Topics
13.1. Modifying QNX Process Environment Variables
13.2. QNX 4 Interprocess Communication (IPC)
13.3. Cogent IPC
13.3.1. Cogent IPC Service Modules
13.3.2. Cogent IPC Advanced services
13.3.3. Cascade DataHub
13.3.4. Cascade DataHub Exceptions and Echos

A. Function List
B. GNU Lesser General Public License