Gofer-LINDA

Gofer-LINDA is an embedding of the Linda primitives into Gofer. Gofer is an interpreted functional programming language, similar to Haskell. It was designed by Mark Jones , who is now at Nottingham University. The language has a non-strict (lazy) semantics.

Work has already been done, by Malcolm Wallace and Rob Noble (both at York), into adding parallel features to Gofer. We have taken this, and added primitives for the Linda operations. The style used is continuation passing style, which is unpleasant to program in - perhaps a Monad approach will taken next time.

The embedding is not as exact as the ISETL embedding, since we do not have eval, but a process spawning mechanism. One just has to get round this by making the last action of a process an out.

The interpreter has a built in schedular (developed by Malcolm and Rob) which is quite neat. It is a (sort of) non-preemptive schedular, where resheduling takes place when communication occurs. The design is similar, I think, to that used by John Cupid in KAOS (Kent Applicative Operating System - it was written entirely in Miranda, though).

Essentially, we have a new type constructor, Process, and a number of primitive functions defined over this type

We add to this another new type, TS, and some primitive operations

Infact, we added another two types, LIn and LOut, which are used to build tuples and templates. This notation is not concrete, as yet.


Linda Home Page