The presented Clean-CORBA interface opens the way for de- veloping parallel and distributed applications consisting of components written in a functional programming language, Clean. The interface de- fines a language mapping from the IDL language used by CORBA to Clean. It contains an IDL-to-Clean compiler which generates the nec- essary stub and skeleton routines from the IDL files. The interface is a general tool for connecting functional Clean programs and programs written in any language using a CORBA interface via the network. We focus on a specific application of this tool in this paper, we build a software architecture for programming clusters using the functional programming language Clean. We design and implement an abstract communication layer based on CORBA server objects. Using this ar- chitecture we can build up applications consisting components written in several programming languages, some components written in pure functional style in Clean, while other components written in an object- oriented language like Java or C#. Based on this software architecture the field of skeletal programming is studied, which suits very well with the functional programming. A skeleton for pipeline computing is chosen as an example to present the main features of this approach.
[1]
Hans-Wolfgang Loidl,et al.
Algorithm + strategy = parallelism
,
1998,
Journal of Functional Programming.
[2]
P. R. Serrarens.
Communication issues in distributed functional computing
,
2001
.
[3]
M.H.G. Kesseler,et al.
The implementation of functional languages on parallel machines with distributed memory
,
1996
.
[4]
Cristóbal Pareja-Flores,et al.
Functional Skeletons Generate Process Topologies in Eden
,
1996,
PLILP.
[5]
Peter Achten,et al.
A tutorial to the Clean object I/O library : version 1.2
,
2000
.
[6]
Ulrich Norbisrath,et al.
Distributed Programming in Haskell with Ports
,
2000,
IFL.
[7]
Arvind,et al.
Implicit parallel programming in pH
,
2001
.
[8]
Rita Loogen,et al.
GpH and Eden: Comparing two parallel functional languages on a Beowulf cluster
,
2000,
Scottish Functional Programming Workshop.
[9]
Jean-Pierre Banâtre,et al.
Parallel Program Design
,
1991,
Research Directions in High-Level Parallel Programming Languages.
[10]
Zoltán Horváth,et al.
Parallel elementwise processable functions in concurrent clean
,
2003
.