[
Lists Home |
Date Index |
Thread Index
]
At 08:27 PM 5/4/2002 -0700, Dare Obasanjo wrote:
>So I'll try to explain my point in lay terms. The main
>benefit of a type system is so that things can be done
>*statically* at compile time instead dynamically at
>run time. Validation is a dynamic process.
In other words, static typing means that you can find errors without
testing them against data that exposes a particular error. The system tells
you that there is a bug that would be exposed if you happened to run into
the right data. This is a very good thing, because you don't always manage
to construct tests that test everything in your code, and the data that
will expose the problem may not exist yet.
Validation, as you say, is a dynamic process, defined in terms of a schema
and an instance. That's why you need structural subsumption, called the
subtype relationship in our formal semantics. This is used to look at a
query expression and the schema for a dataset and report whether there are
any errors. The schema describes all possible instances that would
validate. The type system of XQuery is based on structural subsumption for
this reason.
>Thus a "type system" based on validation isn't really
>type system especially to people with a programming or
>database background.
True. Which is why we need the Formal Semantics, which is largely about
structural subsumption.
>Bottom Line: The XQuery type system although onerous
>and complex does not forestall the need for
>post-update validation if/when XQuery becomes a DML
>and not just a query language. Therefore claims that a
>"type system" is necessary before update semantics can
>be added to XQuery are ill-considered.
There *are* some things, like identity constraints and facets, that are not
part of the static type system in XQuery. These things must be tested
dynamically.
Jonathan
|