\section{Conclusion}
\label{sec:conclude}

In this paper we have presented the various semantic issues in the
design of pH at which it differs from or extends the Haskell
programming language. The major difference is that pH uses a parallel
eager evaluation strategy as opposed to the lazy evaluation strategy
of Haskell. First, we described the kernel pH language and a
normalizing interpreter for it that implements this parallel
evaluation order.  Next, we extended the language and the interpreter
with synchronizing side-effect operations, I-structures and
M-structures. Finally, we described a notion of sequentialization of
side-effects using barriers. We showed a systematic translation of a
kernel pH program with barriers into one without barriers using
primitive termination detection operators.

The readers may note that our interpreter used an explicit instruction
stream rather than directly evaluating kernel language expressions.
This organization allows us to define a multithreaded compilation
scheme for the kernel language within the same framework.  The process
of compilation can be defined as simply generating all the threads
statically instead of manipulating the instruction stream dynamically.
It essentially gets rid of the \fbx{eval} instruction. Such a
compilation scheme for the kernel language is described in
\cite{Aditya95a}.

Currently, there is a working implementation of the pH language using
the Haskell/pH HBCC front-end (written in Haskell) from Chalmers
University and the Id compiler Monsoon back-end (written in Lisp) from
MIT. The HBCC front-end produces a kernel pH intermediate format that
is converted into dataflow graphs and fed into the Monsoon back-end.
Currently, we have exercised this compiler with purely functional
Haskell programs or pH programs derived by automatically
transliterating Id programs.  At MIT, we are currently working on a
new pH back-end for commercial uniprocessor and multiprocessor
architectures that is closer in spirit to the interpretation scheme
described in this paper.
