Jump to content

Numerical tower

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 110.149.120.126 (talk) at 10:11, 24 February 2016 (changed "inverse" to "converse"). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In Scheme and some other Lisp dialects, a numerical tower is the set of data types that represent numbers in a given programming language.

Each type in the tower conceptually "sits on" a more fundamental type, so an integer is a rational number and a number, but the converse is not necessarily true, i.e. not every number is an integer; this asymmetry implies that a language can allow implicit coercions of numerical types—without creating semantic problems—in only one direction: coercing an integer to a rational loses no information and does not affect the results of a function, but to coerce most reals to an integer could well result in a problem (for example, the real 1/3 does not equal any integer).

The Scheme programming language defines all its arithmetic within this model, as do other Lisp dialects. [1] Some implementations may extend or adapt the tower. Kawa, for example, extends it with a Quantity type that is even more generic than Number. Smalltalk is another programming language that follows this model, but it has a Magnitude as superclass of Number. Another popular variant is having both exact and inexact versions of the tower or parts of it. Most languages and language implementations do not support a Scheme-like numerical tower. Some languages support it only in a limited way.

References