Re: The wisdom of the object mentors (Was: Searching OO Associations with RDBMS Persistence Models)

From: Dmitry A. Kazakov <mailbox_at_dmitry-kazakov.de>
Date: Fri, 2 Jun 2006 21:07:11 +0200
Message-ID: <n1jvgsfktm9x$.18ziiwtfe2p2y$.dlg_at_40tude.net>


On 2 Jun 2006 10:51:43 -0700, erk wrote:

> David Cressey wrote:

>> I thought the diffence between a "domain" and a "type" was precisely that
>> types include operators while domains do not.

>
> Neither types nor domains "include" operators. Functions can be defined
> over one or more types, but calling a function an operator is
> imprecise. I suppose "operator" generally means a function of type T
> -> X or of type X -> T (constructor), but really only functions of type
> T -> T -> ... -> T could properly be said to be "included" in type T.
>
> This is why first-class functions, and multimethods, make so much
> sense; and one of the reasons why the forced bondage of every single
> function to a single class (as in Java) is so much nonsense.

Well, obviously functions aren't included into types, there is an n-n relation between them. The desire to bind to one class has a technical reason: multiple dispatch is difficult to implement. The distinction between operators and function is much splitting hairs to me. The only relevant issue is whether the function is polymorphic in the given argument or result (=dispatching in it). Java allows only the first argument be dispatching. It is a limitation of Java.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
Received on Fri Jun 02 2006 - 21:07:11 CEST

Original text of this message