comp.lang.ada
 help / color / mirror / Atom feed
From: Victor Porton <porton@narod.ru>
Subject: Re: Why stack can hold indefinite objects but records cannot?
Date: Tue, 28 Nov 2017 23:31:49 +0200
Date: 2017-11-28T23:31:49+02:00	[thread overview]
Message-ID: <ovkkkc$1m51$1@gioia.aioe.org> (raw)
In-Reply-To: ovki03$1fdr$1@gioia.aioe.org

Dmitry A. Kazakov wrote:

> On 2017-11-28 21:31, Victor Porton wrote:
>> Why is it OK to create an indefinite object as a local variable ("on
>> stack") but not OK to put an indefinite object into a record?
> 
> It is OK in both cases. You must provide the constraint that is.
> 
>> By the way, how indefinite local variables can be implemented? (just
>> curious)
> 
> They cannot, there is no such thing.
> 
> A variable can hold a value which constraints vary. Each value is
> constrained. These either deploy a maximum allocation length like
> bounded strings or hidden referential semantics like unbounded strings.
> 
>> Moreover, wouldn't it to be a good idea to allow indefinite objects in
>> records (thus making the record itself indefinite, even if it has no
>> discriminants)?
> 
> It is a bad idea because there is no straightforward implementation of.
> 
> The proper solution is to have an abstract record interface which would
> allow anything appear a record member whereas the implementation would
> be left to the user. The compiler should provide simple implementation
> of that out of the box, maybe even less than it does already.

But for the stack this is implemented. I don't understand why the same 
cannot be done for records.

-- 
Victor Porton - http://portonvictor.org


  reply	other threads:[~2017-11-28 21:31 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-28 20:31 Why stack can hold indefinite objects but records cannot? Victor Porton
2017-11-28 20:46 ` Dmitry A. Kazakov
2017-11-28 21:31   ` Victor Porton [this message]
2017-11-28 21:50     ` Dmitry A. Kazakov
2017-11-28 22:51 ` Randy Brukardt
replies disabled

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