App
An Algebraic Typing and Pattern Matching Preprocessor for C++
Table of Contents
PREFACE
Introduction
Getting Started
Installation
Usage
Modes of Operation
Sample Code
Caveats
Alpha Type Declarations
Alpha Base Types
user defined body or handle classes
shorthand notation for implied user defined body and handle classes
generated extendible body and handle classes
user defined body and generated extendible handle classes
explicit keyword
last base product component
overriding generated write function via user defined print function
General Algebraic Types
alpha type translation
handle and body class hierarchies
Common Handle Class Methods
static nil function and null objects
Alpha Data Types
zero as null and zero sums
singleton sets
mutability and custom access
ctor parameter passing mechanisms
explicit keyword
root classes and member function definition restrictions
alpha-type-spec construct
Alpha Unit Types
explicit keyword
Alpha Type Types
Alpha Forward Types
unit types are nonrecursive
properly nested forward declarations
forward root classes and user code
Special Considerations
the constant zero
null construction
ctors as conversion operators
unary ctors
copy ctors as identity operators
static constructor functions
Match Statements
General Form of Match Statements
Subject Expressions
Pattern Matching Translations
pattern classifications
general translation scheme
Inductive Patterns
alpha type type references
alpha base type references
Binding Patterns
wildcards
uniqueness of binding patterns
Zero Patterns
Parametric Pattern Types
parametric base types
Nonpositional Patterns
Runtime Type Selection
option stor_method
Case Coverage
default cases and short-circuiting
safety cases
The Runtime Library
Alpha Component
Beta Component
alpha type declarations
List member functions
List template functions
Single type
Associative_List class
Extending_List class
Additional Components
Str class
Pretty_Printer class
Flow class
Shared pointer classes
Symbol List
Hacker's Guide to the Source
Physical Structure
Logical Structure
Customizing
Special Considerations
Projects
The App Input Grammar
Glossary
Changes
APP HOMEPAGE