pLISP
© '98 Thomas Mahler

Table of Content

Parallel Functional Programming

Main Features

Concepts

Disclaimer & Copyright

Content of the archive

Installation

Usage
- Commandline Version
- GUI Version

Examples

Language Documentation

Related Works


Parallel functional Programming

pLISP is an experimental Implementation of parallel functional Programming. It is based on massive parallel graph-reduction machine. This special architecture has been implemented for several platforms in Standard ML and Java. This pLISP edition is a C++ Implementation. This edition includes portable source code for a command line oriented application and a GUI version for the WIN32 platform. This edition is mainly concerned with presenting our approach of parallel functional programming utilizing a very convenient graphical user interface. Second aim of this edition was to provide an optimized implementation of the former proof of concept implementations.

Picture 1: The pLISP Application


Main Features


Concepts

pLISP is an experimental Implementation of reflective functional Programming. It is built as a hybrid architecture using a simple Lisp interpreter for driving the compiler and wrapping calls to the Graph-reduction VM. Lambda terms are compiled to variablefree Combinator Graphs. The virtual Graph-Reduction-Machine that reduces the Combinator-graph distinguishes between strict and non-strict operations. Strict operations have to be evaluated even if lazy evaluation is obeyed and can thus be evaluated in parallel to the main computation. The parallel computations are added to a global task pool, which is maintained by a stochastic scheduler.

In addition to this basic implemenation a special Combinator P is introduced which performs an asyncronous parallelism of two given applications. P (app1 rator1) (app2 rator2) --> (quote parEval(app1 rator1) parEval(app2 rator2))

If rator1 and app2 point to the same object X, you get the funny result, that the same object is used simultaneously as Operand (by app1) and as Operator (for rator2), because both applications are evaluated in parallel: P (app1 X) (X rator2)

This special situation is quite ambigious and "dangerous" for it disturbs the predictability of computational systems. Although it looks a bit awkward and arises many problems in traditional calculi, this Relationship can be formalized by PolyContextural Logics (PCL), which describes it as the "Proemial relationship"

This Relationship is useful in formalizing self-referential, contradictory, autopoietic etc. systems. It is also quite helpful in the formalisation of meta-level architectures and computational reflection.

The aim of the pLISP project is to build a LISP-like Programming language which is capable of implementing such architectures. A short paper in English that provides a general overview is here. A detailed description of the approach and documentation of the implementation is only available in German.

As you will recognise, the implementation is rather small and includes until now only the most necessary features. However you can feel free to experiment with this toolbox, improve it, discard it... or give some feedback for further developments.


Disclaimer & Copyright

Copyright © 1998 ICS Institut fuer Cybernetic und Systemtheorie, Bochum, Germany. All rights reserved.
Copyright © 1997,98 Thomas Mahler

This is copyrighted software. By using the software, you agree to the following terms and conditions.

1. License for personal non-commercial use.
You may use the software only for your personal, noncommercial use.

2. No redistribution.
You may not distribute copies of the software to others.
You may not place the software on any web site, Internet server, electronic bulletin board, //
or other information retrieval systems.

3. No warranty.
THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND.
TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE AUTHOR DISCLAIMS ALL WARRANTIES,
EXPRESS OR IMPLIED, INCLUDING WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

4. Disclaimer.
IN NO EVENT WILL THE AUTHOR BE LIABLE TO YOU FOR ANY DAMAGES,
INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE.

5. Notice of experimental software.
THIS SOFTWARE CONTAINS PROGRAMS OF AN EXPERIMENTAL NATURE,
INCLUDING PROGRAMS THAT HAVE NOT BEEN FULLY TESTED.
YOU AGREE TO ASSUME ALL RISKS INVOLVED I