SOUL(ID:3745/sou001)


SOUL is short for Smalltalk Open Unification Language. SOUL is an open, reflective logic programming language written in VisualWorks 5i4 and ported to various other Smalltalk environments. The current implementation of SOUL also incorporates the ideas of another Logic Meta-Programming tool that was developed at the Programming Technology Lab (PROG): TyRuBa. More precisely, the current SOUL is extended with the quasiquoting facilities of TyRuBa. New developments in the area of Declarative Meta-Programming at PROG are now made using SOUL. An overview of the foundations of SOUL and TyRuBa and new changes to the language can be found in the documentation section.

(SOUL) is a PROLOG like logic language developed by Roel Wuyts at the Programming Technology Lab in the context of his PhD research [Wuy01].

The LMP-tool SOUL enables:

Declarative reasoning about object-oriented programs: [http://prog.vub.ac.be/research/DMP/#Papers]
SOUL allows reasoning about the structure of class-based object-oriented languages.
The language that is reasoned about is represented using an internal parsetree representation, making SOUL a meta-language for Smalltalk. It is thus possible to query Smalltalk code and derive relations between static elements. This allows to express, extract and enforce the link between design and implementation. For example, we have queries to look for composite patterns, type instance variables (although Smalltalk is dynamically typed!), and extract UML class diagrams from code.
Currently the only base-language supported is Smalltalk, but using Frost we will add support for Java, enabling us to look at and validate the language independency.

Declarative code generation: [http://prog.vub.ac.be/research/DMP/#Papers]
A special logic term, called 'QuotedCodeTerm', allows for easy manipulation of sourcecode-templates.Using the logic inference-engine, we can compose such templates and hence, generate an entire program's source code.Recent versions of SOUL contain important changes to this construct.

The current version of SOUL used to be a split-off from the normal SOUL. We used to call it QSOUL, but from now on, this is the official SOUL version.



Structures:
Related languages
Smalltalk => SOUL   Extension of
TyRuBa => SOUL   Influence
SOUL => qSoul   Evolution of

References:
  • Brichau and W. D. Meuter Qsoul manual (draft) view details External link: Online copy