Re: Does Codd's view of a relational database differ from that ofDate&Darwin?[M.Gittens]

From: Jon Heggland <heggland_at_idi.ntnu.no>
Date: Mon, 11 Jul 2005 19:10:44 +0200
Message-ID: <MPG.1d3cc680b82613d69896f7_at_news.ntnu.no>


In article <1121096876.229888.299700_at_g49g2000cwa.googlegroups.com>, boston103_at_hotmail.com says...
> I found an article by H.Darwen (
> http://web.onetel.com/~hughdarwen/TheThirdManifesto/taamoti.paper.pdf )
> that clarifies the issue a bit. Apparently, the kind of user defined
> types T.T.M uses is more of object-oriented (Java, etc) than functional
> flavour (ML, etc).

Yes, hence my Java temperature example. :)

> Why not use the vocabulary familiar to many OO programmers
> and talk about constructors and accessors/modifiers directly ?

I'd guess because they think the existing OO terminology is confused, and want to separate more cleanly between values and variables (and preferrably not use the "O" word:). A "constructor" is arguably different from a "selector", even though it fills a similar role. Same thing with a "modifier" and an "update operator", perhaps.

> [the point] I was under impression that you wanted to compare
> TEMPERATURE with RATIONAL without mapping temperature -> rational
> first, that's all.

Hm. I can't recall that I did, but no matter.

> > If {c=12} is a valid value/constant/literal, it seems
> > you cannot, since you wouldn't be able to distinguish between
> > temperatures and coloumbs. I was then further confused by your statement
> > that they would be distinguished by their tags, as it seemed to me that
> > only union types have tags, and neither temperature nor coloumb is a
> > union type.
>
> In what specific definition ? I do not see the context. I gave at
> least three:

The discussion as I read it:

> > > Since with one possible representation the Celsius word does not do
> > > much (if anything), we can simplify the ML type dfinition to just:
> > >
> > > datatype temperature = {c:rational} and describe a value of the type
> > > temperature as just {c=10}.
> >
> > I guess I really should learn ML, but.... Can I now define a datatype
> > coloumb {c:rational}? How can celsiuses and coloumbs then be
> > distinguished? If I can't, what is the use of defining the datatypes as
> > opposed to just using rational?
>
> Of course, you can. They'll be distinguished by their tags {celsius,
> coloumb}.

It was just a misunderstanding; it is clear now.

> Overall, it was a useful discussion. Now it appears to be quite clear
> that T.D uses types similar to Java "interface types" using nominal
> subtyping (by name rather than by structure). Whether relying on
> "object types" with inheritance and subtyping is preferable to
> functional/algebraic types is yet to be determined ;)

I guess. I won't go into that, at least not before I've learnt more about functional programming. :)

-- 
Jon
Received on Mon Jul 11 2005 - 19:10:44 CEST

Original text of this message