comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Re: Ada Interfaces and the Liskov Substitution Principle
Date: 30 May 2007 05:54:02 -0700
Date: 2007-05-30T05:54:02-07:00	[thread overview]
Message-ID: <1180529642.741098.224230@q66g2000hsg.googlegroups.com> (raw)
In-Reply-To: <c02nfnffh323$.1wtorvl0fxun5$.dlg@40tude.net>

On 30 Maj, 10:43, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
wrote:

> > Polymorphism and references come hand in hand if you need the ability
> > to reassign. Copy-initialization is the only place where you can
> > safely get away with "values" of T'Class.
>
> Are you going to sell me pointers, right here, in c.l.a? (:-))

Don't you call them access variables? :-)

> Referential semantics is an implementation detail.

No, it is not. It gives you explicitly the possibility to "reseat" the
referer as well as sharing semantics. These are not details.
Even with strings, you might want to share the strategy for character
encoding.

> But it would be in vain, because assigning class-wide
> references in this context is semantically equivalent to assigning the
> targets.

Which I say should be banned, because the targets are not statically
known.

> >> That would be indeed a mess. How would you pass an UTF-8 string to GTK+
> >> which knows nothing about your fancy patterns?
>
> > Then it should know.
>
> It cannot, it is ANSI C.

Then you need to call it somehow - anyway. How is the proliferation of
string types supposed to help here?

> I don't see any handling required. But let it be, then how is it different
> from your void * approach?

When did I say void*? It is spelled "interface".

> When you create a void * you have to somehow
> specify the hidden parameter of the case-statement:
>
>    void * X = Create_UTF8 ("foo");
>
> With types you just specify the type of the object instead:
>
>    X : UTF8_String := "foo";

Which - again - is not an assignment.
Just a reminder - we are talking about:

X := Y;

> The question is how do I do dispatching assignment?

Just don't. :-)

> Your point was that I shall not do it publicly. But, may I dispatch
> privately?

Privately you can dispatch to your internal strategies to get
character conversions, buffers, etc.

> >> Static polymorphism does not allow mixing types.
>
> > ?
>
> Instances from a statically polymorphic class of types are unrelated types.
> You cannot have any polymorphic object from that class, only specific
> objects. For the same reason you cannot have any class-wide operation from
> that class.

So?

> >> Further you cannot design
> >> a library for formatting strings which would not be generic itself.
>
> > 1. So?
>
> Write an editor for such strings, store a string, send it over the network,
> do anything after uninstalling the compiler ...

Still don't see the problem.

> > 2. Yes, I can. Just use arbitrary string type for formatting and then
> > convert to the destination type.
>
> Why should I bother to have UTF-8 or ASCII strings if anything is
> Wide_..._Wide_Unbounded anyway?

The Wide_..._Wide_Unbounded can be useful as an intermediary format
for conversion between other types, which themselves might still be
very useful providing their own characteristics.

> What are you going to do if the endianess
> of Wide x n Character does not fit your machine?

And why should I bother with endianness here?

> Whatever pattern you use, you will have to deal with this number of
> cases.

Or I just delegate to locale and conversion library that is part of my
operating system.
On my system I can have LOTS of different locales:

$ locale -a | wc -l
502

Do you really expect me to have 502 classes in my program just for
strings?

--
Maciej Sobczak
http://www.msobczak.com/




  reply	other threads:[~2007-05-30 12:54 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-23 19:47 Ada Interfaces and the Liskov Substitution Principle Stefan Lucks
2007-05-23 20:32 ` Ludovic Brenta
2007-05-23 22:00   ` Randy Brukardt
2007-05-24  0:56     ` Anh Vo
2007-05-24 18:27     ` Pascal Obry
2007-05-24 18:39       ` Dmitry A. Kazakov
2007-05-24 18:51         ` Pascal Obry
2007-05-24 22:44         ` Randy Brukardt
2007-05-24  6:57   ` Stefan Lucks
2007-05-23 20:54 ` Maciej Sobczak
2007-05-23 21:58   ` Randy Brukardt
2007-05-24  7:29     ` Maciej Sobczak
2007-05-24  8:02       ` Dmitry A. Kazakov
2007-05-24 12:58         ` Maciej Sobczak
2007-05-24 13:42           ` Dmitry A. Kazakov
2007-05-24 22:08           ` Robert A Duff
2007-07-01  1:00             ` David Thompson
2007-05-24 22:58           ` Randy Brukardt
2007-05-25  7:52             ` Maciej Sobczak
2007-05-25  8:21               ` Dmitry A. Kazakov
2007-05-25 20:27                 ` Maciej Sobczak
2007-05-26  7:48                   ` Dmitry A. Kazakov
2007-05-27  8:30                     ` Maciej Sobczak
2007-05-27 10:04                       ` Dmitry A. Kazakov
2007-05-29  8:03                         ` Maciej Sobczak
2007-05-29 13:18                           ` Dmitry A. Kazakov
2007-05-29 13:32                             ` Dmitry A. Kazakov
2007-05-29 15:34                             ` Maciej Sobczak
2007-05-29 17:07                               ` Dmitry A. Kazakov
2007-05-30  7:40                                 ` Maciej Sobczak
2007-05-30  8:43                                   ` Dmitry A. Kazakov
2007-05-30 12:54                                     ` Maciej Sobczak [this message]
2007-05-30 13:56                                       ` Dmitry A. Kazakov
2007-05-30 16:49                                         ` vgodunko
2007-05-30 20:52                                         ` Maciej Sobczak
2007-05-31  8:15                                           ` Dmitry A. Kazakov
2007-05-31 13:46                                             ` Maciej Sobczak
2007-06-01  7:29                                               ` Dmitry A. Kazakov
2007-06-01 13:32                                                 ` Maciej Sobczak
2007-06-01 14:53                                                   ` Dmitry A. Kazakov
2007-06-01 20:31                                                     ` Maciej Sobczak
2007-06-02  8:19                                                       ` Dmitry A. Kazakov
2007-06-02 16:49                                                         ` Maciej Sobczak
2007-06-03  7:09                                                           ` Dmitry A. Kazakov
2007-06-03 22:04                                                             ` Maciej Sobczak
2007-06-04  8:08                                                               ` Dmitry A. Kazakov
2007-06-04 17:02                                                                 ` Maciej Sobczak
2007-06-05  8:35                                                                   ` Dmitry A. Kazakov
2007-06-05 22:12                                                                     ` Maciej Sobczak
2007-06-06  8:21                                                                       ` Dmitry A. Kazakov
2007-06-06 14:46                                                                         ` Maciej Sobczak
2007-06-06 15:11                                                                           ` Maciej Sobczak
2007-06-06 15:32                                                                       ` Markus E Leypold
2007-05-24 10:42       ` Georg Bauhaus
2007-05-24 13:41         ` Dmitry A. Kazakov
2007-05-25 16:59         ` Markus E Leypold
2007-05-28  9:52           ` Georg Bauhaus
2007-05-28 11:50             ` Dmitry A. Kazakov
2007-05-28 23:32               ` Georg Bauhaus
2007-05-29 12:05                 ` Dmitry A. Kazakov
2007-05-29 13:33                 ` Georg Bauhaus
2007-05-29 17:29                   ` Dmitry A. Kazakov
2007-05-29 20:46                     ` Georg Bauhaus
2007-05-30  7:53                       ` Dmitry A. Kazakov
2007-05-30 13:18                       ` Georg Bauhaus
2007-05-31 10:27                         ` Dmitry A. Kazakov
2007-05-31 11:44                         ` Georg Bauhaus
2007-06-01  7:37                           ` Dmitry A. Kazakov
2007-06-01 10:07                             ` Markus E Leypold
2007-06-01 11:41                             ` Georg Bauhaus
2007-06-01 13:07                               ` Dmitry A. Kazakov
2007-05-28 13:47             ` Markus E Leypold
2007-05-28 23:12               ` Georg Bauhaus
2007-05-28 13:56             ` Markus E Leypold
2007-05-28 23:00               ` Georg Bauhaus
2007-05-24  7:39 ` Dmitry A. Kazakov
2007-05-24 11:12   ` Stefan Lucks
2007-05-24 13:56     ` Dmitry A. Kazakov
2007-05-24 14:41       ` Stefan Lucks
2007-05-24 15:46         ` Dmitry A. Kazakov
2007-05-24 15:00       ` Georg Bauhaus
replies disabled

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