Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
A
B
C
D
E
F
G
H
I
JK
L
M
N
O
P
QR
S
T
UV
WXYZ+
Get a full dump of the dictionary:
List of Names
Short Form
Full Form
- SETL
- Language type:
- Description:
SETL is a high-level procedural language
designed to bring the power of set theory
to programmers. SETL programs are
typically compiled.
The fundamental data types in SETL are:
integers (unlimited precision), reals
(machine precision), strings, booleans,
and the explicit non-value, omega ("om" for
short).
The main data structures are sets and
tuples: sets are unordered but unique,
while tuples are ordered but can contain
duplicates. A special case of the set
type very often employed in programming
is the map, a set of 2-tuples.
The language includes a rich set of
constructs and functions for creating and
manipulating sets and tuples.
SETL is a highly dynamic language;
sets and tuples can be heterogeneous, and
can be nested to arbitrary depth. In
general, variables are typed by the value
they hold; some type checking for operators
is enforced.
Sets and tuples can be created on the fly,
garbage collection is automatic (presumably
by reference counting, since there are no
pointers in the language).
Because it supports generalized notions
of sets and tuples, SETL provides loop
constructs based on them. It also provides
conventional while-do loops, if-then-else
selection, and a case statement.
SETL supports definition of functions and
definition of
new operators. There are no
procedures in SETL, but any function can return
omega.
Most dialects of SETL support a sub-language
that allows the programmer to define how
data structures are to be stored
internally by the compiler; this allows the
user to give guidance to the compiler,
possibly improving performance.
SETL supports module and library features
for large-scale programming. Newer editions
of the language also support named
packages (like Ada), and there are also
dialects that support classes and
object-oriented programming.
Several implementations of SETL are
available, mostly for DOS and UNIX
platforms, but there is also a Macintosh
version. Information on the language,
including tutorials and references, is
available but mostly in downloadable
print formats
rather than web pages.
- Origin:
Jacob T. Schwartz, 1969; Courant Institute, 1970.
- See Also:
- Remarks:
SETL is reputed to be very good for
writing compilers, translators, and other
transformational programs; its set and map
data types allow the programmer to take
a very high-level view of the problem
and its solution. The first Ada
language system was implemented with SETL.
Several dialects or variations on SETL
have been created since the language
became widely available in the 1970s.
ISETL is a dialect with more formal
mathmatics operations, intended for
mathematicians. PSETL is a dialect
with data structure time-history.
SETL-S was a subset of the language for
small PCs running DOS.
Modern implementations of SETL
correspond to a language definition
from the 1980s called 'SETL2'.
- Links:
-
-
-
- Date:
- Sample code:
$ A SETL program to do the sieve of
$ Erastothenes (probably badly, but its my first
$ SETL program)
program sieve;
read(mx);
primes := {};
(for x in [3..mx] | odd x)
primes with:= x;
end;
(for x in [3..ceil(mx / 2)] | odd x)
primes := sieve1(x, primes);
end;
print(primes);
proc sieve1(rd n, rd pset);
(for x in pset | n < x and x mod n = 0)
pset less:= x;
end;
return pset;
end proc sieve1;
end program sieve;
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is ziring@home.com
[Ziring MicroWeb Home]
[Dictionary Start]
[Sign Guestbook]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.