TEL is a second generation logic programming language integrating types and functions with relational programming a la Prolog. Relations are defined as in Prolog and are executed by typed resolution and backtracking. Functions are defined with conditional equations and are executed by typed innermost rewriting. The most innovative aspect of TEL is its type system, which accommodates parametric polymorphism as in ML and subtypes as in OBJ2. Variables need not be declared since TEL's type checker infers their most general types automatically. Types are present at runtime through typed matching and unification: values are tested for membership in subtypes and variables are constrained to subtypes. TEL is not a toy language. Almost the entire TEL system has been written in TEL. TEL has a module facility supporting the incremental construction of large programs. Furthermore, TEL supports type-safe file handling and other extra-logical operations.
Download PDF Show BibTeX
Login to edit