H. John Reekie (johnr@eecs.berkeley.edu) and John Potter (johnpot.microsoft.com)
Proceedings of MFPW'92, the Massey Functional Programming Workshop, Massey University, Palmerston North, New Zealand, August 1992.
The process network model of parallelism maps well to loosely-coupled message-passing parallel machines. In this paper, we explore in Haskell how vector and stream datatypes, combined with a suitable set of higher-order functions, can be used to construct process networks. We use standard transformation techniques to alter the structure and degree of parallelism in a network, and illustrate with an extended example. As an aid to understanding the structure of these networks, we have developed a graphical notation for a subset of Haskell that extends the commonly used ``box-and-arrow'' notation. The graphical notation has proven to be a valuable tool for visualising and transforming process networks.