comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: use of 'Base to compensate for the lack of information
Date: Wed, 27 Dec 2017 14:28:17 +0100
Date: 2017-12-27T14:28:17+01:00	[thread overview]
Message-ID: <p2075j$m0$1@gioia.aioe.org> (raw)
In-Reply-To: dc81f170-1442-48d8-af5d-a929cfabfdcb@googlegroups.com

On 2017-12-27 13:29, Mehdi Saada wrote:

> It seems good and practical, but at one time, I need the coefficient 
> to be multiplied by the coefficients' array index, which is a
> Natural.

Does not make sense, but ...

> So, I wrote
>      with function "*" (E1: in ELEMENT; E2: in NATURAL'Base) return ELEMENT is <>;
> 
> But since X'Base meant the unconstrained subtype of X, any type
> defined as "type T is range ..." won't fit in.

Since it is not Integer, yes.

> Yet I don't want any
> assumption on the nature of ELEMENT. It could be defined as Integer,
> Natural, modular types, or be rational made of modular types in case of
> FINITE FIELDS.

Array index of a rational type? That makes any array except empty and 
singleton countably infinite, well, well.

> How do I do while keeping that generic design ?

    type Index is range <>;
    with function "*" (Left : Element; Right : Index)
       return Element is <>;

  [ with function "*" (Left, Right : Element) return Element is <>; ]

If you want it be any copyable type, then

    type Bandersnatch is private;
    with function "*" (Left : Element; Right : Bandersnatch)
       return Element is <>;

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  reply	other threads:[~2017-12-27 13:28 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-27 12:29 use of 'Base to compensate for the lack of information Mehdi Saada
2017-12-27 13:28 ` Dmitry A. Kazakov [this message]
2017-12-27 13:53   ` Mehdi Saada
2017-12-27 16:10 ` Jeffrey R. Carter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox