comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Question on bounded / unbounded strings
Date: Thu, 22 Sep 2016 11:53:55 +0200
Date: 2016-09-22T11:53:55+02:00	[thread overview]
Message-ID: <ns09p7$bp2$1@gioia.aioe.org> (raw)
In-Reply-To: ns06kn$i6v$1@dont-email.me

On 22/09/2016 11:01, J-P. Rosen wrote:
> Le 22/09/2016 à 09:24, Dmitry A. Kazakov a écrit :
>> Neither do I, I never ever used bounded strings. They are totally
>> useless, IMO.
> No, they are not.
>
> A bounded string is perfectly appropriate to represent abstract data
> that are /implemented/ by a string.
>
> Typical example:
> - you want to represent a first name, a family name, and an address.
 > - You want them to be different types (to make it impossible to mix
 > them), although they are all implemented as strings.

type First_Name is new String;
type Family_Name is new String;
type Postal_Address is new String;

> - You have an underlying data base that imposes a maximum length for
> each of these, but the actual length can be anything up to the maximum

type Fist_Name is new SQL_C_CHAR;

If you do DB you use DB data types.

BTW, such external constraints, if they exist, are pretty much volatile. 
You don't want to make them static that would make the design very fragile.

> => Bounded_String is the way to go.

Never. It is very difficult to find cases where

1. There is a hard upper bound, so hard that it would be feasible to 
mold it into the type.

2. There is no cases where the upper bound implies another type. There 
is nothing in the first name's length that makes first name different 
from the second name. These are just unrelated things.

The major reason for that is that constraint whatever it be is most 
likely an implementation detail, which type difference is to reflect the 
problem space.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  reply	other threads:[~2016-09-22  9:53 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-13  8:46 Question on bounded / unbounded strings Arie van Wingerden
2016-09-13  9:04 ` Dmitry A. Kazakov
2016-09-22  2:10   ` John Smith
2016-09-22  7:24     ` Dmitry A. Kazakov
2016-09-22  9:01       ` J-P. Rosen
2016-09-22  9:53         ` Dmitry A. Kazakov [this message]
2016-09-22 10:58           ` G.B.
2016-09-22 12:05             ` Dmitry A. Kazakov
2016-09-22 14:14               ` G.B.
2016-09-22 17:18                 ` Dmitry A. Kazakov
2016-09-22 11:08           ` J-P. Rosen
2016-09-22 12:05             ` Dmitry A. Kazakov
2016-09-22 13:18           ` Maciej Sobczak
2016-09-22 13:52             ` Dmitry A. Kazakov
2016-09-22 14:51               ` Maciej Sobczak
2016-09-22 17:13                 ` Dmitry A. Kazakov
2016-09-23  5:50                   ` Maciej Sobczak
2016-09-23  6:36                     ` Simon Wright
2016-09-23  7:48                       ` Dmitry A. Kazakov
2016-09-28 20:55                     ` Randy Brukardt
2016-09-23 23:58       ` John Smith
2016-09-24  7:52         ` Dmitry A. Kazakov
2016-09-24 16:25           ` John Smith
2016-09-24 17:44             ` Dmitry A. Kazakov
2016-09-24 18:33               ` John Smith
2016-09-24 18:37               ` John Smith
2016-09-24 18:59               ` John Smith
2016-09-25  8:50                 ` Dmitry A. Kazakov
2016-09-25 23:35                   ` brbarkstrom
2016-09-26  7:28                     ` Dmitry A. Kazakov
2016-09-26 12:39                       ` brbarkstrom
2016-09-28 21:09             ` Randy Brukardt
2016-09-30  7:59               ` Björn Lundin
2016-09-13  9:35 ` gautier_niouzes
2016-09-13 10:41 ` Alejandro R. Mosteo
2016-09-13 17:41 ` Jeffrey R. Carter
2016-09-13 17:59 ` Björn Lundin
2016-09-14 11:23 ` Arie van Wingerden
2016-09-14 12:26   ` Arie van Wingerden
2016-09-14 12:28   ` Arie van Wingerden
2016-09-14 12:57 ` Arie van Wingerden
2016-09-14 19:39   ` Jeffrey R. Carter
2016-09-17 16:35     ` Arie van Wingerden
2016-09-16 14:43 ` Olivier Henley
2016-09-17 16:35   ` Arie van Wingerden
replies disabled

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