From: Jacob Sparre Andersen <sparre@nbi.dk>
Subject: Re: Parametrically polymorphic operations (Was: Safe C++)
Date: Fri, 21 Sep 2001 19:13:27 +0200
Date: 2001-09-21T19:13:27+02:00 [thread overview]
Message-ID: <3BAB7537.BC7ED73D@nbi.dk> (raw)
In-Reply-To: 3BAB65EE.210F4F77@sparc01.ftw.rsc.raytheon.com
Wes:
> Jacob Sparre Andersen wrote:
> > safe types, I have certainly wanted something very similar
> > to parametrically polymorphic functions. It would make it
> > possible to have more extensive compile time checks, than
> > what is possible with Ada as it is defined today.
> >
> > An example:
> >
> > type Matrix (Left, Right : Positive) is private;
Nobody seems to have noticed, but the type should of course
have been declared as:
type Matrix (Width, Height : Positive) is private;
> >
> > function "*" (Left : in Matrix;
> > Right : in Matrix (Height => Left.Width))
> > return Matrix (Width => Right.Width,
> > Height => Left.Height);
>
> Where are you going to put the result?
For example in:
Result : Matrix (Width => 4, Height => 4);
> If the implementation is reasonable, constraint_error
> will be raised when the constraints on the left side don't
> the constraints on the result.
The implementation of my favourite Ada compiler or the
implementation of function "*"?
The problem is that the constaints on the result can not be
expressed in the specification of "*". You have to put them
in the implementation of "*". GNAT may not be a reasonable
implementation of an Ada compiler, but it is the one I use
most of the time, and I have not been able to get it to
complain about mismatches in the dimensions of matrices,
when doing matrix multiplications. I would appreciate it, if
you could explain us how to write a matrix multiplication
function, which allows some of the existing Ada compilers to
complain about mismatches in matrix dimensions at compile
time.
> And if the constraints are static on both, many compilers
> will detect it at compile time.
Would you care to mention one or two examples?
Jacob
--
ACRONYM: A Contrived Reduction Of Nomenclature Yielding
Mnemonics
next prev parent reply other threads:[~2001-09-21 17:13 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-09-18 19:45 Safe C++ Richard Riehle
2001-09-19 14:38 ` Brian Rogoff
2001-09-19 15:52 ` Chad Robert Meiners
2001-09-19 17:43 ` Brian Rogoff
2001-09-19 21:38 ` Chad R. Meiners
2001-09-20 3:38 ` Brian Rogoff
2001-09-20 11:52 ` Pat Rogers
2001-09-20 16:01 ` Brian Rogoff
2001-09-20 8:22 ` Colin Paul Gloster
2001-09-20 13:45 ` Chad R. Meiners
2001-09-20 21:03 ` codesavvy
2001-09-20 11:37 ` Parametrically polymorphic operations (Was: Safe C++) Jacob Sparre Andersen
2001-09-20 11:41 ` Lutz Donnerhacke
2001-09-20 12:27 ` Jacob Sparre Andersen
2001-09-20 15:49 ` Brian Rogoff
2001-09-21 9:24 ` Jacob Sparre Andersen
2001-09-20 16:22 ` Dmitry A. Kazakov
2001-09-21 16:08 ` Wes Groleau
2001-09-21 17:13 ` Jacob Sparre Andersen [this message]
2001-09-21 18:43 ` Wes Groleau
2001-09-20 2:41 ` Safe C++ David Botton
2001-09-20 2:39 ` David Botton
2001-09-20 3:21 ` Brian Rogoff
2001-09-20 12:43 ` David Botton
2001-09-25 14:21 ` Region-based mem mgmt [was: Re: Safe C++] Tucker Taft
2001-09-25 14:46 ` Tucker Taft
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox