world as value

Marco Kesseler mke@oce.nl
Thu, 17 Jun 1999 17:01:16 +0200


Simon wrote:
>
>Concurrent Haskell was intended for just this purpose:
>
>	
>http://research.microsoft.com/~simonpj/papers/concurrent-haskell.ps.gz
>

Hi Simon,

Not too long ago I looked at http://www.haskell.org/humor/press.html and
read something about 'leaving hell holes', 'getting real jobs', and in
particular 'the end of our research efforts'. I don't suppose this
is really what has happened...

>There are doubtless many ways to address this issue, 
>but Concurrent Haskell is at least aimed squarely at
>the questions that have been raised in this thread.
>
>There's nothing really Haskell-ish about it.  Clean could
>readily implement the CH primitives; indeed they probably
>already exist in some form.  The conceptual point is that
>CH explicitly abandons the goal of regarding a *program* as
>a function.  Instead, the top layer has an explicit, operational
>semantics in the process-calculus style.  This 'coordiation layer'
>sits on top of a 'computation layer', which is an ordinary standard
>denotational semantics, and in which functions really are pure functions.

The concept of concurrent haskell is indeed interesting and
relevant here. However, It might (?) be better however, NOT to
actually extend Clean (or other functional languages) with
these kinds of concurrency constructs.

With respect to Clean, I would be very happy if it were easy
to call Clean functions from well known, standard (possibly
object-oriented) imperative languages. At least that might
allow me to take one of these nice (commercial) programs
and write plug-ins for it in Clean.

And Fergus wrote:
>On 17-Jun-1999, Marco Kesseler <mke@oce.nl> wrote:
>>
>> - if I'm interested in values, I end up with lamda calculus and
>>   functional languages.
>> - if I'm interested in actions, I end up with process algebra,
>>   CSP, and more or less the good old imperative world.
>> 
>> Well, wat would be really great is to have a proper interface between
>> these two paradigms, so than one can use both instead of choosing one.
>
>That's exactly what modern "purely functional" or "purely declarative" 
>languages (e.g. Haskell, Clean, Mercury) give you.

Not exactly. They allow me to 'do' imperative-like things IN a functional
paradigm, forcing me to pass around states or to use Monads. That is
not bad, but it is not the same as giving me the 'good old'
imperative programming world.

>So what's the problem?

The 'problem' is that I sometimes want to call Clean functions
easily from C and I can't.

regards,
Marco

---------------------------------------------

Marco Kesseler
Oce-Technologies B.V.
St. Urbanusweg 43, Venlo, The Netherlands
P.O. Box 101, 5900 MA Venlo, The Netherlands
telephone +31 77 359 5158
fax       +31 77 359 5450
e-mail    mke@oce.nl