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
-
Concurrent Clean
- Language type:
F - Functional or lambda-based
- Description:
Concurrent Clean is a purely functional
strongly-typed language meant for
distributed and parallel-processing
application development. It can use
a lazy evaluation model, and supports
higher-order functions; it also supports
interfacing with legacy non-functional
languages and systems.
Basic data types supported by Clean include
integers, reals, strings, boolans, lists,
tuples, arrays, and higher-order functions.
Like Hope and other modern functional languages,
Clean allows multiple typed rules to be
defined for a given function name; a
pattern-matching process applies the correct
function rule for a particular set of arguments.
To allow modification of state
information and interfacing with non-functional
languages, Clean employs a polymorphic
uniqueness type inferencing system.
Clean supports several advanced facilities:
currying and higher-order functions,
module support with separate interface
and implementation, algebraic functions
with quantified variables, and even
a simple
compile-time macro
facility.
The U. of Nijmegen implementation of Clean is
the only one (as of early 1998); it is
available free for Macintosh, Windows, Linux
and Sun Unix. The portable compiler
generates textual ABC-bytecodes (roughly RTL-level),
which the platform-specific Clean code generator then translates
to a native executable.
Fairly good documentation
about the language is available at the
Clean home site, but most of it is in
downloadable PDF rather than HTML.
- Origin:
Nöcker, Plasmeijer, Smetsers et al, Univ. of Nijmegen, 1984-91.
- See Also:
- Remarks:
Clean's development was first driven by research
into graph re-writing and type inference in
a pure functional language. Later,
the language was directed toward supported
distributed processing applications.
Concurrent Clean is still under
development. For example, an
object-oriented I/O and GUI library with
support for object transfer and
persistence was recently added.
Also, a nice interactive development
environment is available; it is written in
Clean itself.
- Links:
-
- Date:
- Sample code:
// Solution to Hamming's problem in Clean,
// generate an infinite sorted stream of numbers
// of the form (2^n)*(3^m)*(5*p). From the examples
// distributed with Concurrent Clean v1.2.
Ham::[Int]
Ham = y
where
y = [1:merge (merge (map ((*) 2) y) (map ((*) 3) y)) (map ((*) 5) y)]
merge [] [] = []
merge f [] = f
merge [] f = f
merge f=:[a:b] g=:[c:d]
| a<c = [a:merge b g]
| a==c = merge f d
| otherwise = [c: merge f d]
Start::[Int]
Start = take NrElements Ham
NrElements :== 300 // Size of finite sample to take.
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.