TCLP Download

Lastest version : Linux/i386 / Darwin/ppc / library (tgz) / library (zip) / source

Download archive
version 0.4.4 : Linux/i386 / Darwin/ppc / library (tgz) / library (zip) / source


New feature
  • It is now possible to define type aliases, using the syntax:

    :- typealias alias_name(A,B,C,...) = type.

    where alias_name is the name of the alias, A,B,C are variables representing the alias parameters and type is a parameterized type where variables A,B,C can occur. For example:

    :- typealias int_assoc(A) = list(pair(int,A)).

    defines the alias int_assoc with one argument to be equal to the type list(pair(int,A)) where A corresponds to the argument of the alias.

version 0.4.3 : Linux/i386 / Darwin/ppc / library (tgz) / library (zip) / source


New features
  • When infering the type of predicates and constraints, TCLP now uses type information provided by the programmer in order to treat smaller parts of the source code at once (that is it uses type information to break connex components of the call graph into smaller pieces).
  • If no m.typ file is found when encountering use_module(m), TCLP now tries to type check
Minor changes
  • Updated syntax error message, so it is compatible with emacs
  • The .typ file for modules that are currently type checked is now optional

version 0.4.2 : Linux/i386 / Darwin/ppc / library (tgz) / library (zip) / source


New features
  • A cache system for the type structure has been implemented. This speeds up the initialization of TCLP when type checking the file file several times.
  • Prints errors of typeof declarations
  • prints names correctly when encountering an error with --option nodefault.

version 0.4.1 : Linux/i386 / Darwin/ppc / library (tgz) / library (zip) / source


  • DCG expansion (thanks to D. De Rauglaudre).
  • prints the type of variables when finding an error in a clause.
  • possibility to disable the default type term x term x ... x term -> term for function symbols (using command line arguments --option nodefault).

version 0.4 : Linux/i386 / Darwin/ppc / library (tgz) / library (zip) / source


  • Bugfix: added missing libraries in the link phase.
  • In type check, when doing type inference, a bug appeared when then head of the clause has the wrong type (for example, when a chr constraint was declared of type pred instead of chr_constraint) instead of correctly reporting the error.
Speed improvements
  • Uses backtracking to reinitialize solvers in between type checking of two connex parts.
  • Added some checks to avoid propagating type constraints that dont change anything.
  • Removed intermediate type variables in type checking.
  • Type constraints (X :< Y , Y :< X) are simplified into X = Y.
Misc updates
  • Added an error when declaring a type constructor twice but with a different number of arguments.
  • Clauses for the predicate tclp__files:file_search_path/2 can be added so tclp can find module of the form some(thing) (same use as user:file_search_path/2).
  • Error messages should be in one line now.
  • Added keyword `subtype' as an alias for `order'.
  • Removed some (not very useful) command line option.
Type libraries updates
  • Added code to handle grammar in GNU-Prolog type libraries.
  • Some bugfixes.

version 0.3b : Linux/i386 / Darwin/ppc / library (tgz) / library (zip) / source


  • fixed bug in type inference when heuristic fails

version 0.3 : Linux/i386 / Darwin/ppc / library (tgz) / library (zip) / source


  • created a tclp subdir in the src directory
  • now tclp executable uses the tclp library
  • auto location of the tclp directory: one doesn't need to specify were are the standard type libraries
  • fixed a bug in type inference (was too restrictive and didn'nt provided the term x ... x term -> pred type by default)
  • added the manual

version 0.2.99g : Linux/i386 / library (tgz) / source


  • fixed bug in the type constraint solver that could have make it loop.
  • added library of types for GNU Prolog
  • now provides a way to install tclp as a library for sicstus.
  • the handling of ',' and 'op' has been moved to the corelib.typ files
  • added the possibility to change the type of predicates defined by a clause: ex: +: defines a 'fd_constraint' and not a 'pred'.
    • changed type libraries to use this
    • added tclp__define_clause_op(Operator,TypeOfPredicate)
    • Heads in tclp__define_clause(Clause,Location,Heads,Bodies(,Conditions)) are now triplets (Head - HeadLocation - HeadType)
  • removed computing of connex parts when doing type check only
  • added connex component timing when -v actions -v timing are enabled
  • implemented a heuristic for choosing the next overloaded symbol to disambiguate

version 0.2.99e : Linux/i386 / source

type librairies updates, bug fixes, now one can define clauses using tclp__define_clause/(4,5) to define new forms of clauses such as +: for fd in SICStus

version 0.2.99d : Linux/i386 / source

type librairies updates, bug fixes, added tclp_include/1 directive

version 0.2.99c : Linux/i386 / source

type librairies updates

version 0.2.99b
Rewritten in SICStus Prolog and CHR. This version allows overloading of symbols.

Download the source files

Download GNU/linux x86 binaries

version 0.2.1
written in Objective CAML, using François Pottier's library Wallace for solving subtyping constraints.

Download the source files

Download GNU/linux x86 binaries libc6 / static