Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
T (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Dialect of the Scheme programming language}} {{Infobox programming language | name = T | logo = | paradigms = [[Multi-paradigm programming language|Multi-paradigm]]: [[Object-oriented programming|object-oriented]], [[Imperative programming|imperative]], [[Functional programming|functional]], [[Metaprogramming|meta]] | family = [[Lisp (programming language)|Lisp]] | designers = Jonathan A. Rees<br/>Norman I. Adams | developers = same | released = {{Start date and age|1982}} | latest release version = 3.0 | latest release date = {{Start date and age|1984|08|01}} | typing = [[dynamic typing|dynamic]], [[Strong and weak typing|strong]] | scope = | programming language = | discontinued = Yes | platform = Cross-platform | operating system = [[Cross-platform software|Cross-platform]] | license = | file ext = | file format = <!-- or: | file formats = --> | website = {{URL|mumble.net/~jar/tproject}} | implementations = | dialects = | influenced by = [[Scheme (programming language)|Scheme]] | influenced = [[EuLisp]], [[Joule (programming language)|Joule]] }} '''T''' is a [[Dialect (computing)|dialect]] of the [[Scheme (programming language)|Scheme]] [[programming language]] developed in the early 1980s by Jonathan A. Rees, [[Kent Pitman|Kent M. Pitman]], and Norman I. Adams of [[Yale University]] as an experiment in language design and implementation.<ref>{{cite book |last1=Slade |first1=Stephen |year=1987 |title=The T programming language: a dialect of LISP |publisher=Prentice-Hall |publication-place=Englewood Cliffs, New Jersey |isbn=978-0-13-881905-7 |oclc=16094677}}</ref> ==Rationale== T's purpose is to test the thesis developed by [[Guy L. Steele Jr.]] and [[Gerald Jay Sussman]] in their series of papers about Scheme: that Scheme may be used as the basis for a practical programming language of exceptional expressive power, and that implementations of Scheme could perform better than other Lisp systems, and competitively with implementations of programming languages, such as [[C (programming language)|C]] and [[BLISS]], which are usually considered to be inherently more efficient than Lisp on conventional machine architectures. Much of this occurs via an [[optimizing compiler]] named Orbit. T contains some features that modern Scheme lacks. For example, T is [[Object-oriented programming|object-oriented]], and it has first-class environments, called ''locales'', which can be modified non-locally and used as a module system. T has several extra special forms for [[lazy evaluation]] and [[Control flow|flow control]], and an equivalent to [[Common Lisp]]'s [[setf (disambiguation)|setf]]. T, like Scheme, supports [[call-with-current-continuation]] (call/cc), but it also has a more limited form called <code>catch</code>. From the T manual, a hypothetical implementation of <code>[[cons]]</code> could be: <syntaxhighlight lang="scheme"> (define-predicate pair?) (define-settable-operation (car pair)) (define-settable-operation (cdr pair)) (define (cons the-car the-cdr) (object nil ((pair? self) t) ((car self) the-car) ((cdr self) the-cdr) (((setter car) self new-car) (set the-car new-car)) (((setter cdr) self new-cdr) (set the-cdr new-cdr)))) </syntaxhighlight> This example shows that objects in T are intimately related to closures and message-passing. A primitive called <code>join</code> puts two objects together, allowing for something resembling [[Inheritance (object-oriented programming)|inheritance]]. {{Lisp}} ==Ports== T was ported to many hardware [[Computing platform|platforms]] and [[operating system]]s, including:<ref>{{cite web |url=http://mumble.net/~campbell/t/t.html |title=T Revival Project |last=Campbell |first=Taylor `Riastradh' |date=7 April 2006 |website=Mumble.net |publisher=Internet Archive Wayback Machine |archive-url=https://web.archive.org/web/20070103020434/http://mumble.net/~campbell/t/t.html |archive-date=2007-01-03 |access-date=2018-11-18 |url-status=live }}</ref> *[[MIPS architecture|MIPS]]: DEC 3100 (pmax), [[SGI IRIS]] *[[Motorola 68000]] (m68k): Apollo Domain/OS, [[HP/UX]], Mac/AUX, [[NeXT]], [[SunOS]] 3 *[[NS320xx]] (n32k): [[Encore Computer|Encore]] Multimax *[[SPARC]]: SunOS 4 and above, [[Solaris (operating system)|Solaris]], [[Unix]] on [[Connection Machine]] 5 *[[VAX]]: Ultrix ==See also== {{Portal|Computer programming}} ==References== {{Reflist}} ==External links== * {{Official website|mumble.net/~jar/tproject}} * [http://www.paulgraham.com/thist.html History of T], by Olin Shivers * [https://web.archive.org/web/20170515045004/http://repository.readscheme.org/ftp/papers/t_manual.pdf T manual] (PDF) from ReadScheme, via the Internet Archive {{Lisp programming language}} {{Authority control}} [[Category:Lisp programming language family]] [[Category:Scheme (programming language)]] [[Category:Programming languages created in 1982]] <!-- Hidden categories below --> [[Category:Articles with example Lisp (programming language) code]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Lisp
(
edit
)
Template:Lisp programming language
(
edit
)
Template:Official website
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)