| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> comp.databases.theory -> Re: What databases have taught me
On 30 Jun 2006 10:49:39 -0700, Marshall wrote:
> Dmitry A. Kazakov wrote:
>> On 30 Jun 2006 09:39:29 -0700, Marshall wrote: >> >>> Dmitry A. Kazakov wrote: >>>> On 30 Jun 2006 08:39:09 -0700, Marshall wrote: >>>>>> >>>>>> 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). >>> >>> Mmmm, what I was trying to point out is that it is a somewhat >>> OOish idea to consider functions on a type as part of the >>> definition of that type. >>> >>> Given a set A, and a set B. >>> Given a function f: A -> B >>> >>> We would not *necessarily* consider f as part of the definition of A. >> >> Absolutely. f is a part of definition of both.
Why? Mathematics is full of such stuff. Field is a not a field without +. Types aren't sets of values. They are structures like: ring, field etc.
>> type <-> function is a relation. "Member" function is rubbish. BTW, when I >> talk about multiple dispatch I do include results of functions. So, say >> >> + : A x B -> C >> >> is triple dispatching. It is an operation of types A, B, C.
C is a brain cancer. Alas, that Dijkstra wrote only about Basic! (:-)) There are so many misconceptions in one single phrase, that I don't know where to start from.
+: int x float -> int +: float x int -> int +: float x float -> int +: int x float -> float +: float x int -> float
> You *don't* want to be in a situation where you can't assign
> a type to an expression; it introduces cascading ambiguity.
See 3. As for the result of, in a typed language is *always* defined. Because each object has *a* type. As for your example, nothing can be said, as long as it is unknown:
-- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.deReceived on Fri Jun 30 2006 - 14:16:30 CDT
![]() |
![]() |