ALU capability (was Re: [E-Lang] Authority -- what is its dual?)

Peter Van Roy pvr@info.ucl.ac.be
Mon, 22 Oct 2001 16:14:28 +0200


> > If you want the phrase 'Blocks are Objects' to mean
> > something, then you must define precisely what you mean
> > by 'Object'!
> 
> At this point, most discussions drift off in the meta-verse ;-) I usually
> prefer the (widely accepted) definition that "an Object is a thing you can
> send messages to". Since you can send messages to blocks, I'd say they
> certainly qualify :-)
> 
> Cheers,
>   - Andreas

The usual precise definition of an 'object' is in terms of functional
programming with encapsulated state (e.g., ML with refs).  An object
is simply a function that has an encapsulated state, i.e., a state
that is hidden from the outside through lexical scoping.  This can be
given a simple and precise operational semantics.  Languages similar
to E (with Actor / functional / concurrent logic programming ancestry)
all define 'object' in this way.

'Sending messages' is a vague term that I don't like to use.  Is it
function invocation?  Is it sending on an asynchronous communications
channel?  The term is rife with confusion.

But this is getting rather off-topic I guess, so I will climb back
into my barrel.

Peter