comp.lang.ada
 help / color / mirror / Atom feed
From: n_brunot@my-deja.com
Subject: Re: Ok sorry, it is just a book gives no feedback.
Date: Thu, 04 Jan 2001 15:49:58 GMT
Date: 2001-01-04T15:49:58+00:00	[thread overview]
Message-ID: <932632$e0e$1@nnrp1.deja.com> (raw)
In-Reply-To: 931t08$5u5$1@nnrp1.deja.com

In article <931t08$5u5$1@nnrp1.deja.com>,
  Robert Dewar <robert_dewar@my-deja.com> wrote:
> In article <931r2l$4ai5t$2@ID-25716.news.dfncis.de>,
>   "Nick Roberts" <nickroberts@callnetuk.com> wrote:
>
> > My own opinion is that, generally, functions should have no
> > side effects
>
> This principle is in general a reasonable one, but it is not
> easy to define what this means. Nick goes on to give an
> explanation, but his explanation is wrong, it would forbid
> many functions, e.g. anything that allocates and returns a
> pointer, which is far too severe.
>

Well "generally" seems reasonable and never said that this behavior is
forbidden.
Of course some functions must have side effects, but I agree it's better
to avoid it each time side effects are not necessary.

Just look the following code (simplified from old buggy code).
Depending if the compiler evaluate right or left term first for "&",
you get quite different behavior ....
This is a pathologic case, but good example to show why it's not so bad
to avoid side effect each time you can, and keep constantly testing your
code on different Ada compilers ...

with Text_Io;
procedure Test is
   N : Natural := 10;
   function Decrement return String is
   begin
      N := N - 1;
      return "A";
   end;
   function Recursive return String is
   begin
      if N /= 0 then
         return Decrement & Recursive;
      else
         return "A";
      end if;
   end;
begin
   Text_Io.Put_Line (Recursive);
end;


Sent via Deja.com
http://www.deja.com/



  reply	other threads:[~2001-01-04 15:49 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-12-31 14:18 Ok sorry, it is just a book gives no feedback Mark Pagdin
2000-12-31 16:56 ` Robert Dewar
2000-12-31 16:57 ` Robert Dewar
2001-01-01 11:03 ` Tarjei T. Jensen
2001-01-02  9:23 ` Newsgroup cla (was: Ok sorry, it is just a book gives no feedback.) Anders Wirzenius
2001-01-02 10:44   ` Florian Weimer
2001-01-02 13:21     ` Larry Kilgallen
2001-01-02 12:45   ` Andrew Hately
2001-01-02 13:25     ` Florian Weimer
2001-01-02 22:26 ` Ok sorry, it is just a book gives no feedback John English
2001-01-03  6:24 ` Nick Roberts
2001-01-04 13:14   ` Robert Dewar
2001-01-04 15:49     ` n_brunot [this message]
2001-01-04 17:09       ` Robert Dewar
2001-01-05  8:53         ` n_brunot
2001-01-05 13:45           ` Robert Dewar
2001-01-05 21:23             ` Randy Brukardt
2001-01-06  4:05               ` Larry Kilgallen
2001-01-06 17:11                 ` Robert Dewar
2001-01-06 20:26                   ` Larry Kilgallen
2001-01-06 22:40                     ` Robert Dewar
2001-01-07  1:12                       ` Larry Kilgallen
2001-01-07  4:19                         ` Robert Dewar
2001-01-07 17:12                           ` Larry Kilgallen
2001-01-08 12:26                             ` Marin David Condic
2001-01-08 12:57                             ` Larry Kilgallen
2001-01-08 15:01                     ` Stephen Leake
2001-01-08 15:58                       ` Ted Dennison
2001-01-09 21:13                       ` Jean-Pierre Rosen
2001-01-06 19:46               ` Laurent Guerby
2001-01-06 20:36                 ` Robert Dewar
2001-01-07 13:09                   ` Laurent Guerby
2001-01-07 15:56                     ` Robert Dewar
2001-01-07 16:25                       ` Laurent Guerby
2001-01-07 15:58                     ` Robert Dewar
2001-01-07 17:19                     ` Larry Kilgallen
2001-01-06  7:13           ` Simon Wright
2001-01-07 16:00             ` Robert Dewar
2001-01-07 17:16             ` Larry Kilgallen
2001-01-04 17:11       ` Robert Dewar
replies disabled

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