Re: What databases have taught me

From: Dmitry A. Kazakov <>
Date: Fri, 30 Jun 2006 18:18:00 +0200
Message-ID: <1rjmgkr4cnsou$.kum6upcwqxzc$>

On 30 Jun 2006 08:39:09 -0700, Marshall wrote:

> Dmitry A. Kazakov wrote:

>> On 30 Jun 2006 00:32:11 -0700, Marshall wrote:
>>> What do multimethods buy you? If programmer x
>>> entends the operations, and programmer y extends
>>> the data types, who is going to write the code that
>>> implements x's operator on y's data type? This problem
>>> is a fundamental one; it cannot be solved by language
>>> featues.
>> It can. The language can statically require the developers to define all
>> operations [slots in the dispatching table.] For multimethods it is
>> statically enforceable. For full multiple dispatch it looks difficult.
> Language features can statically *detect* the problem, but they
> can't fill in the matrix. At this point, only programmers can do
> that.

Yes. Semantics cannot be inferred, it can only be checked to some extent (depending on how much redundancy were built into declarations)

>> I agree with you. IMO, it is a fundamental requirement on a *consistent*
>> multiple dispatch.
>> Side note: in a strongly typed language "extension" of an operation can be
>> accomplished only through an "extension" of the type (actually a class of).
>> This happens by adding a new type to the class, so that the operation
>> extension be defined on that new type.
> I believe you are descring OO here, yes?

Actually any typed system with user-defined relations on types, I don't think that it is any specific to OO. Nothing prevents RM from allowing polymorphic values in tuples. Also tuples themselves could be made polymorphic as well (to support mixed logics, for example, or to attach some constraints etc).

Dmitry A. Kazakov
Received on Fri Jun 30 2006 - 18:18:00 CEST

Original text of this message