[Oberon] Oberon and closures

B. Smith-Mannschott benpsm at gmail.com
Thu Oct 30 17:54:24 MET 2008


On Oct 30, 2008, at 09:11, Jörg Straube wrote:

>
> What about this?
>
> MODULE Example;
> (* my oberon is also a little rusty *)
> TYPE
>  Printer = POINTER TO Closure;
>  Closure = RECORD
>    n-: INTEGER;
>    Print: PROCEDURE();
>  END;
> PROCEDURE CreatePrinter*(i: INTEGER): Printer;
>  VAR s: Printer;
>  BEGIN
>    NEW(s); s.n :=i; RETURN Printer
>  END
>
> VAR p, q: Printer;
> BEGIN
>  p:=CreatePrinter(2);
>  q:=CreatePrinter(3);
>  p.Print
>  q.Print
> END Example.
>
>
> Joerg

Indeed, there is an equivalence between objects (state with behavior)  
and
closures (behavior with state).

Anton van Straaten observed a few years ago (more humorously than I  
could manage):

<http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html 
 >
   The venerable master Qc Na was walking with his student, Anton.   
Hoping to
prompt the master into a discussion, Anton said "Master, I have heard  
that
objects are a very good thing - is this true?"  Qc Na looked pityingly  
at
his student and replied, "Foolish pupil - objects are merely a poor  
man's
closures."
Chastised, Anton took his leave from his master and returned to his  
cell,
intent on studying closures.  He carefully read the entire "Lambda: The
Ultimate..." series of papers and its cousins, and implemented a small
Scheme interpreter with a closure-based object system.  He learned  
much, and
looked forward to informing his master of his progress.

   On his next walk with Qc Na, Anton attempted to impress his master by
saying "Master, I have diligently studied the matter, and now understand
that objects are truly a poor man's closures."  Qc Na responded by  
hitting
Anton with his stick, saying "When will you learn? Closures are a poor  
man's
object."  At that moment, Anton became enlightened.
// Ben


More information about the Oberon mailing list