comp.lang.ada
 help / color / mirror / Atom feed
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



  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