Leora Morgenstern <leora@steam.Stanford.EDU> wrote:
> Hi Hassan,
Hi Leora - HNY!
> In the December 19 meeting, there was something you said that I did not
> get down properly. This was in the discussion between you, Frank, and
> Harold regarding slotted arguments.
>
> I have in my notes your saying:
> "this is a very strange version of extensional records of functional
> programming
> ... was suggested ?? years ago by ???
>
> "
>
> Could you fill in the ?? and ??? for me?
Sorry for mumbling ... :-(
Not 'extensional', but 'extensible' records. And ?? = "by Mitch Wand in
a LICS 1987 paper" (see below).
Here is what I had in mind to say (I copy the RIF WG since it explains
why I said the brief cryptic statement I made and that is to be reported
in the minutes).
Harold's trick using an 'etc' (or 'rest') variable to represent extensible
records or slotted terms is an old one. It is basically a variant of a
continuation (or difference list as they are known in Prolog) using a LV
to bind the tail of a list to excess information. While it works - it is
useless for our purposes of describing strict/vs/flexible arity of slotted
terms. My claim is that constraints inherited from signature schemata
define the extent of admissible slots for each constructor symbol.
BTW, this technique was used by Mitch Wand as far back as 1987 [1] to
model extensible records in FP by systematically adding to each record
an additional "rightmost" special field - called a "row variable" - whose
sole purpose is to act as a catch all hook to be bound to potential further
field/value (resp. field/type) pair list extending such a record object
(resp., type). Thus is inheritance modelled in polymorphic FP languages
such as ML since the row variable continuation representation turns out
to be efficient when combined with functional Hindely-Milner style
polymorphic type inference. (Indeed, by the Curry-Howard isomorphism, the
problem is computationally identical to using difference lists with Horn
clause resolution for efficient matching sequence concatenations.)
By the way, this "trailing etc." trick has appeared in many areas under
several guises in Computer Science: e.g., continuations and monads in FP,
Prolog's difference lists, LIFE's accumulators, Lambek grammar's left and
right divisions, Categorial grammars, etc., ...
[1] Mitchell Wand, "Complete Type Inference for Simple Objects", in Proc.
2nd IEEE Symposium on Logic in Computer Science, pages 37--44, 1987.
(See also corrigendum in the 3rd LICS, 1988, page 132.)
Best regards,
-hak
--
Hassan AÃ¯t-Kaci
ILOG, Inc. - Product Division R&D
tel/fax: +1 (604) 930-5603 - email: hak @ ilog . com
-----Original Message-----
From: Leora Morgenstern [mailto:leora@steam.Stanford.EDU]
Sent: Mon 1/8/2007 4:10 PM
To: Hassan Ait-Kaci
Subject: Could you help me with something you said in the Dec 19 minutes?
Hi Hassan,
In the December 19 meeting, there was something you said that I did not
get down properly. This was in the discussion between you, Frank, and
Harold regarding slotted arguments.
I have in my notes your saying:
"this is a very strange version of extensional records of functional
programming
... was suggested ?? years ago by ???
"
Could you fill in the ?? and ??? for me?
Thanks very much,
Leora