EuLisp(ID:1139/eul006)

European LISP standard 


1985-present. LISP dialect intended to be a common European standard, with influences from Common LISP, Le LISP, Scheme and T.
First-class functions, classes and continuations, both static and dynamic scope, modules, support for parallelism.
The class system (TELOS) incorporates ideas from CLOS, ObjVLisp and Oaklisp.is a modern OO dialect of LISP whose design was less minimalistic than that of SCHEME but less constrained by compatability reasons than that of COMMON LISP. In particular, it has a single namespace for variables and functions (like SCHEME, and unlike COMMON LISP) and it's type system is perfectly integrated with the object system. Futhermore, the language makes use of the module system, so that every program may import only those parts it needs.


Structures:
Related languages
Common LISP => EuLisp   Influence
Le-Lisp => EuLisp   Influence
Scheme => EuLisp   Influence
T => EuLisp   Influence
EuLisp => ELLIS   Extension of
EuLisp => Free   Implementation
EuLisp => TELOS   Subsystem
EuLisp => youtoo   Extension of

References:
  • Broadbery, P. et al, "Using Object-Oriented Mechanisms to Describe Linda", in Linda-Like Systems and Their Implementation, G. Wilson ed, U Edinburgh TR 91-13, 1991. view details
  • EuLisp Manual view details External link: Online copy Extract: Introduction
    Introduction
    EuLisp is a dialect of Lisp and as such owes much to the great body of work that has been done on language design in the name of Lisp over the last thirty years. The distinguishing features of EuLisp are (i) the integration of the classical Lisp type system and the object system into a single class hierarchy (ii) the complementary abstraction facilities provided by the class and the module mechanism (iii) support for concurrent execution.
    Here is a brief summary of the main features of the language.

    Classes are first-class objects. The class structure integrates the primitive classes describing fundamental datatypes, the predefined classes and user-defined classes.
    Modules together with classes are the building blocks of both the EuLisp language and of applications written in EuLisp. The module system exists to limit access to objects by name. That is, modules allow for hidden definitions. Each module defines a fresh, empty, lexical environment.
    Multiple control threads can be created in EuLisp and the concurrency model has been designed to allow consistency across a wide range of architectures. Access to shared data can be controlled via locks (semaphores). Event-based programming is supported through a generic waiting function.
    Both functions and continuations are first-class in EuLisp, but the latter are not as general as in Scheme because they can only be used in the dynamic extent of their creation. That implies they can only be used once.
    A condition mechanism which is fully integrated with both classes and threads, allows for the definition of generic handlers and supports both propagation of conditions and continuable handling.
    Dynamically scoped bindings can be created in EuLisp, but their use is restricted, as in Scheme. EuLisp enforces a strong distinction between lexical bindings and dynamic bindings by requiring the manipulation of the latter via special forms.
    EuLisp does not claim any particular Lisp dialect as its closest relative, although parts of it were influenced by features found in Common Lisp, InterLisp, LeLisp, Lisp/VM, Scheme, and T. EuLisp both introduces new ideas and takes from these Lisps. It also extends or simplifies their ideas as seen fit. But this is not the place for a detailed language comparison. That can be drawn from the rest of this text.
    EuLisp breaks with Lisp tradition in describing all its types (in fact, classes) in terms of an object system. This is called The EuLisp Object System, or Telos. Telos incorporates elements of the Common Lisp Object System (CLOS) [?], ObjVLisp [?], Oaklisp [?], MicroCeyx [?], and MCS [?].

    Resources