# Type

Typing in general means that the choice of possible data structures manipulated by a program can be conceptually divided into groups of objects with some homogeneity (e.g. integers, floating-point numbers, lists, arrays, hash-tables, etc.); the term for these groups is called a*type*.

A *variable's type* is the upper bound of the range of values that a variable can assume during the execution of a program.

Depending on the type of an object, different interfaces will be available to interact with it (numbers are subject to arithmetic operations; lists can be deconstructed into head and tail; functions can be applied; etc.), and different algorithms will be used to implement common interfaces (adding two integers is not same as adding two floating-point numbers).

**This page is linked from: ** Axiom Benjamin C. Pierce Clean Component Object Model Coq Dependent Types Foreign Function Interface Lava Lego Logic Self TAL Type System