comp.lang.ada
 help / color / mirror / Atom feed
From: aek@vib.usr.pu.ru (Alexander Kopilovitch)
Subject: Re: conversion
Date: 6 Jul 2003 18:09:57 -0700
Date: 2003-07-07T01:09:57+00:00	[thread overview]
Message-ID: <e2e5731a.0307061709.2380f52e@posting.google.com> (raw)
In-Reply-To: 3F079D10.2060709@attbi.com

Robert I. Eachus wrote:

>But notice two major differences between the Ada way, and the C and 
>Pascal way.  The Ada solutions are built around standard Ada features, 
>not special case features,

I do not see major difference between C and Ada general approaches to
strings (Pascal is another matter). In both C and Ada strings are no more
than regular arrays of characters - in core language, and all support for
them is in standard library only.
  The particular difference between C and Ada regarding literals in a
string array initializer is then simply a consequence of C's array/pointer
kinship.

>procedure Varying is -- an example of how to create ragged arrays in Ada.
>
>   subtype Lim_Int is Integer range 0..30;
>   type Inner(L: Lim_Int := 0) is record S: String(1..L); end record;
>   type Wrapper is record I: Inner; end record;
>   type Ragged_Array is array (Integer range <>) of Wrapper;
>
>   function "+" (S: in String) return Wrapper is
>   begin return (I =>(S'Length, S)); end "+";
>
>   function "+" (W: in Wrapper) return String is
>   begin return W.I.S; end "+";

Just interesting detail: you use the same name "+" for both conversions.
(I do not argue against that, I simply found that somehow symptomatic.)

>   Dishes: Ragged_Array := (+"black pudding",
>                            +"crab soup",
>                            +"steak & kidney pie",
>                            +"lemon tart");
>
>   Titles: Ragged_Array := (+"Quizionary",
>                            +"Nose To Nose",
>                            +"Myself",
>                            +"General Dissent",
>                            +"Veteran's Opinion",
>                            +"Corporate Science Weekly",
>                            +"Truth, Wealth, Health",
>                            +"Bribery Times");
>
>begin null; end Varying;

As you may expect, I'm not satisfied with two things here:

1) Lim_Int - why 30, why not 123 ? Why should I always bother myself with
justification of this value, and then, at the end, sooner or later, invite
something like Ariane 5 effect (hopefully, in much lesser scale -;) ?

2) "+" at the beginning of each string literal. It reads as "Warning! This
programming language does not pay particular attention to strings, you will
be often obliged to do manually some common things with the strings".

First point is certainly minor, because I can use Unbounded_String here.
But the second point is quite significant. Just compare the situation with
richness of representations for literals for numeric types in Ada.



Alexander Kopilovitch                      aek@vib.usr.pu.ru
Saint-Petersburg
Russia



  parent reply	other threads:[~2003-07-07  1:09 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-27 10:51 conversion Andrew
2003-06-27 12:22 ` conversion Dmitry A. Kazakov
2003-06-27 12:37 ` conversion Stephen Leake
2003-06-27 14:26   ` conversion Bill Findlay
2003-06-27 17:04     ` conversion Georg Bauhaus
2003-07-04  0:21     ` conversion Dave Thompson
2003-06-27 13:25 ` conversion Robert I. Eachus
2003-06-27 18:42   ` conversion tmoran
2003-06-27 14:49 ` conversion Matthew Heaney
2003-06-27 17:10 ` conversion Georg Bauhaus
2003-06-27 17:13 ` conversion Alexander Kopilovitch
2003-06-27 17:34   ` conversion Preben Randhol
2003-06-27 22:10     ` conversion Alexander Kopilovitch
2003-06-28  9:46       ` conversion Preben Randhol
2003-06-27 22:13   ` conversion Robert I. Eachus
2003-06-30  8:52     ` conversion Dmitry A. Kazakov
2003-07-03  7:03       ` conversion Robert I. Eachus
2003-07-09  7:42         ` conversion Dmitry A. Kazakov
2003-07-09 17:04           ` conversion Robert I. Eachus
2003-07-10 10:19             ` conversion Dmitry A. Kazakov
2003-07-11  1:56               ` conversion Alexander Kopilovitch
2003-07-05  2:40     ` conversion Alexander Kopilovitch
2003-07-05  6:33       ` conversion Georg Bauhaus
2003-07-05 17:06         ` conversion Alexander Kopilovitch
2003-07-06  3:53           ` conversion Robert I. Eachus
2003-07-06  5:13             ` conversion Jeffrey Carter
2003-07-06 12:45               ` conversion Chad R. Meiners
2003-07-07  1:09             ` Alexander Kopilovitch [this message]
2003-07-06 20:04           ` conversion Georg Bauhaus
2003-07-07 14:55             ` conversion Stephen Leake
2003-07-07 21:36               ` conversion Alexander Kopilovitch
     [not found] <002701c33e22$8e9deaf0$0201a8c0@win>
2003-06-29 20:15 ` conversion David C. Hoos, Sr.
  -- strict thread matches above, loose matches on Subject: below --
2003-06-29  9:41 conversion Andrew
2003-07-04 10:42 ` conversion Janeit
2003-06-28  8:46 conversion Andrew
2003-06-28  9:49 ` conversion Preben Randhol
2003-06-30 14:08 ` conversion Stephen Leake
2003-06-27 17:37 conversion Andrew
2003-06-27 17:32 ` conversion Stephen Leake
2003-06-28  2:55 ` conversion Jeffrey Carter
1998-07-22  0:00 conversion Rick
1998-07-22  0:00 ` conversion Richard Toy
1998-07-22  0:00 ` conversion Corey Ashford
1998-07-22  0:00   ` conversion Corey Ashford
replies disabled

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