Type Systems & Type Checking
Dynamic Type and Static Type
- Runtime vs Compile time
 - Slow vs fast
 - flexible vs inflexible
 
Strong Typing
- Sound type system: guarantees that a no type errors can occur at runtime
 - cons
- Some checks can only be done dynamically (Array bounds checking)
 - Such checking can cause serious performance degradation
 - Even so-called strongly typed languages often have “holes" in the type system (e.g. variant records in Pascal)
 
 
Type Equivalence
- If types are required to match, the question of what types are considered to be “equivalent" arises
 - Structural equivalence requires equivalent structures
- Identical basic types
 - Same type constructor applied to equivalent types
 
 - Name equivalence considered types to be equal only if the same names are used
 - C uses structural equivalence except for records
 
Type Signatures
- The signature of a procedure is a description of the types of its arguments and type of its result.
 - i.e) sqrt : real -> real, mod: integer X integer -> integer
 
Polymorphic Procedures
- A procedure that has multiple type signatures is called polymorphic
 
Failure Of Type Checking Due To Aliasing, Variant Records, Subroutine Calls
Citation:
- 
Aho, Lam, Sethi, & Ullman, Compilers: Principles, Techniques, and Tools
 - 
UT Austin CS375: Compilers by G.Novak.