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