comp.lang.ada
 help / color / mirror / Atom feed
From: wojtek@power.com.pl (Wojtek Narczynski)
Subject: Re: What evil would happen?
Date: 13 Jul 2003 15:35:52 -0700
Date: 2003-07-13T22:35:52+00:00	[thread overview]
Message-ID: <5ad0dd8a.0307131407.4955979e@posting.google.com> (raw)
In-Reply-To: bes4uv$1o29$1@msunews.cl.msu.edu

"Chad R. Meiners" <crmeiners@hotmail.com> wrote in message news:<bes4uv$1o29$1@msunews.cl.msu.edu>...

> > "Functions" with side effects can only inject their side effect into
> > where they have been hardcoded to.
> This is wrong.  Function have the capability to randomly introduce side
> effects just like any other section of code.

Have you read the whole thread?

> In my experience, functions are more useful
> when they are pure.  Sure there are times when a function cannot be pure,
> but sub-routine with a side-effect should be made a procedure in most cases.

I agree that functions should be pure. But procedures cannot return an
unconstrained value. Again, this is what this thread is about.

> In mathematics, functions only return single elements, which may be a
> composite of some sort.

Well, in the mathematical definition there is no "call" so there may
not be a "return". Instead there are two sets...

> I suggest that if you want return composites from
> functions you should return a record type.
> 
> type Composite(StringSize : Natural) is record
>      User_Name : String(1..StringSize);
>      Result    : Boolean;
> end record;
> 
> function Parse_User_Name(Item : String) return Composite;
> 
> However, the following might also be a suitable procedure for the task

Yes, this works, but causes code explosion, and memory copying (when
gathering all the parsed pieces together). This is what you can neatly
do in SML with tagged union types, by the way :-)
 
> procedure Parse_UserName (Item : String;
>                                               UserName : out String;
>                                               NameSize : out Natural) ;

This works fine for shor strings, but for longer there will be
unnecessary storage allocation.

Regards,
Wojtek



  reply	other threads:[~2003-07-13 22:35 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-11 19:51 What evil would happen? Wojtek Narczynski
2003-07-11 20:07 ` Hyman Rosen
2003-07-12 12:30   ` Wojtek Narczynski
2003-07-12 17:17     ` Martin Dowie
2003-07-13  1:46     ` Hyman Rosen
2003-07-13 15:29       ` Wojtek Narczynski
2003-07-11 20:08 ` chris.danx
2003-07-12  4:31   ` Nick Roberts
2003-07-12 12:26     ` Wojtek Narczynski
2003-07-12 12:39       ` Preben Randhol
2003-07-12 13:11         ` Larry Kilgallen
2003-07-12 13:22           ` Preben Randhol
2003-07-12 19:04             ` Larry Kilgallen
2003-07-14  8:43               ` Preben Randhol
2003-07-14 10:32                 ` Larry Kilgallen
2003-07-14 11:05                   ` Preben Randhol
2003-07-14 11:31                   ` Larry Kilgallen
     [not found]                   ` <slrnbh53ir.48d.Organization: LJK Software <zSeTW0M3CTPU@eisner.encompasserve.org>
2003-07-14 17:31                     ` Wojtek Narczynski
2003-07-13 15:26             ` Wojtek Narczynski
2003-07-13 17:28               ` Chad R. Meiners
2003-07-13 22:35                 ` Wojtek Narczynski [this message]
2003-07-14  0:06                   ` Chad R. Meiners
2003-07-13 22:36                 ` Wojtek Narczynski
2003-07-14  3:01                 ` Hyman Rosen
2003-07-14  4:41                   ` Chad R. Meiners
2003-07-14 23:32                   ` [ot] languages & academia was " chris.danx
2003-07-14  9:09                 ` Dmitry A. Kazakov
2003-07-14 17:44                   ` Chad R. Meiners
2003-07-14 18:15                     ` tmoran
2003-07-15  8:06                     ` Dmitry A. Kazakov
2003-07-11 21:26 ` Robert I. Eachus
2003-07-12 12:38   ` Wojtek Narczynski
2003-07-16  0:07     ` Robert I. Eachus
2003-07-16  8:11       ` Preben Randhol
2003-07-14 18:52 ` Randy Brukardt
2003-07-14 20:12   ` Hyman Rosen
2003-07-15  2:32   ` Alexander Kopilovitch
2003-07-15  8:19   ` Wojtek Narczynski
2003-07-15 17:33     ` Randy Brukardt
2003-07-16  0:22       ` Robert I. Eachus
2003-07-16  8:36       ` Dmitry A. Kazakov
2003-07-15  5:16 ` Kenneth Almquist
2003-07-15 11:31   ` Wojtek Narczynski
2003-07-18  8:23 ` Wojtek Narczynski
2003-07-18 14:45   ` Hyman Rosen
2003-07-19  0:55   ` Robert I. Eachus
  -- strict thread matches above, loose matches on Subject: below --
2003-07-11 23:04 Beard, Frank Randolph CIV
2003-07-12 12:46 ` Wojtek Narczynski
replies disabled

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