comp.lang.ada
 help / color / mirror / Atom feed
From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: What evil would happen?
Date: Tue, 15 Jul 2003 10:06:04 +0200
Date: 2003-07-15T10:06:04+02:00	[thread overview]
Message-ID: <jec7hvcf010ssgf4q58shsibl94nor3aq9@4ax.com> (raw)
In-Reply-To: beuq6i$1a7v$1@msunews.cl.msu.edu

On Mon, 14 Jul 2003 13:44:26 -0400, "Chad R. Meiners"
<crmeiners@hotmail.com> wrote:

>"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
>news:o9s4hvofb2mtn8ga9ahf7uu530pfacald8@4ax.com...

>> 1. All functions are pure. So no access parameters allowed, no access
>> to global data from the body is allowed etc.
>>
>> 2. But procedures are allowed to have a result.
>>
>> This would be perfectly consistent and as safe as possible.
>
>I prefer SPARK's rules on functions, but I think that we should just allow
>in out parameters for our unpure functions since passing access parameters
>can be ugly.  I really do not see the harm in allowing unpure functions
>because good modularity usually nudges the programmer towards writing pure
>functions.  However, when an exception is needed being able to write unpure
>function should be straight forward and easy to detect at the specification
>level.

Exactly, this is why I'd prefer procedures with a result and functions
enforced (as much as possible) to be pure. Then a code reader could
easily figure out from the declaration what to expect, rather than
searching for some obscure pragmas or inspecting the bodies. I believe
that code purity is important enough to deserve extra syntax sugar.
Then we are already going this way - the functions of a protected
object may not change its state, which influences the implementation.
Similarly, function calls could be implemented differently from calls
to procedures. For example, the language could require the exact call
order for procedures. I mean nasty pitfalls like:

Character'Pos (Read (Socket)) * 256 + Character'Pos (Read (Socket))

---
Regards,
Dmitry Kazakov
www.dmitry-kazakov.de



  parent reply	other threads:[~2003-07-15  8:06 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
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 [this message]
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