comp.lang.ada
 help / color / mirror / Atom feed
From: fjh@cs.mu.oz.au (Fergus Henderson)
Subject: Re: Beginner's question (array parameters to functions)
Date: 1998/11/29
Date: 1998-11-29T00:00:00+00:00	[thread overview]
Message-ID: <73qc0p$24e$1@mulga.cs.mu.OZ.AU> (raw)
In-Reply-To: m3iug0bbpf.fsf@mheaney.ni.net

Matthew Heaney <matthew_heaney@acm.org> writes:

>greg <ref15@columbia.edu> writes:
>> One requirement of the assignment is that the
>> sorting be done by a function which takes the array as a parameter and
>> returns a sorted array.
...
>> My question is the following:  As I understand it, in an Ada function, a
>> parameter must be passed in "in" mode.  Therefore, I assume that in this
>> assignment, the sorting function has to make a copy of the array
>> parameter, sort the items in this second array, and finally return this
>> second array to the caller subprogram, because, given that the array is
>> passed as a parameter, there is no way to change the values of the array
>> that is copied in for use in the function.
>> 
>> Is my understanding correct, or is there some way to avoid having to use
>> two arrays?
>
>But there are two arrays no matter what: one is unsorted

When the sort function is called.

>and one is sorted.

When the sort function returns.

>Having two arrays is a condition of the problem statement,
>and has nothing to do with the language.

This is not correct.

In some languages, e.g. C++, arrays can be passed and returned by
reference, and can be modified, so (unless there was some additional
constraint in the assignment, e.g. that the function's input argument
not be modified) the two arrays could be the same array.
The fact that these two arrays have different contents is not a contraction,
because the different contents occur at different times, and it's quite
possible for a single array to have different contents at different times.

In other languages, e.g. Clean and Mercury, arrays can't be modified,
but it is possible to create new arrays by modifying existing arrays,
so long as the old version will no longer be referenced.  In these
languages, the two arrays would be conceptually distinct, but could
occupy the same storage area.

--
Fergus Henderson <fjh@cs.mu.oz.au>  |  "Binaries may die
WWW: <http://www.cs.mu.oz.au/~fjh>  |   but source code lives forever"
PGP: finger fjh@128.250.37.3        |     -- leaked Microsoft memo.




  parent reply	other threads:[~1998-11-29  0:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-11-27  0:00 Beginner's question (array parameters to functions) greg
1998-11-28  0:00 ` Matthew Heaney
1998-11-28  0:00   ` Brian Rogoff
1998-11-29  0:00     ` Matthew Heaney
1998-11-29  0:00   ` Fergus Henderson [this message]
1998-11-29  0:00     ` Matthew Heaney
1998-12-02  0:00       ` Fergus Henderson
1998-11-28  0:00 ` Tom Moran
replies disabled

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