comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Convention for naming of packages
Date: Mon, 13 Feb 2012 22:02:17 +0100
Date: 2012-02-13T22:02:17+01:00	[thread overview]
Message-ID: <1nsv5nr9t05qd$.4u7741n9thcp.dlg@40tude.net> (raw)
In-Reply-To: op.v9mp33z5ule2fv@douda-yannick

On Mon, 13 Feb 2012 19:10:41 +0100, Yannick Duchêne (Hibou57) wrote:

> Le Mon, 13 Feb 2012 18:19:16 +0100, Dmitry A. Kazakov  
> <mailbox@dmitry-kazakov.de> a écrit:
>> It is a quite uncommon use anyway. I mean to have a package of instances of
>> some types.
>>
>> But certainly if that happens the instance always have meaningful names
>> rather than "Object". E.g.
>>
>> package Units.Base is
>>    Current : constant Unit;
>>    Luminescence : constant Unit;
>>    Temperature : constant Unit;
>>    ...
> This is a good example, but still not a singleton,

That was an example of singleton values.

> that's a specification, there is no need for an instantion here.

This one for singleton objects:

package Standard_IO is
   Input : File_Type;  -- Assuming File_Type limited
   Output : File_Type;
   Error : File_Type;

Here is an example for singleton type:

task Scheduler is
   ...

(Though singleton types are always suspicious for bad design)

> About package holding singleton really holding singleton, like say a Log  
> package which would create a singleton file "Log.File" objct, I believe  
> that's not good for re‑usability (ex. what about multiple task?). Better  
> provide a type with a constructor,

Constructor = constructor or constructor = constructing function? The
latter is bad design.

As for the example with log file, it is better not to expose it:

package Logging is
   type Category is mod ...;
   Warning : constant Category;
   Error : constant Category;
   Info : constant Category;
   Any : constant Category;
   ...
   procedure Log (Event : Category; Text : String; Stamp : Time := Clock);
   ...
end Logging;

> What lacks for me here, is some paper with in deep talks about naming  
> convention in numerous ways.

J-P provided one. He is one, whom opinion you can always trust (even if you
disagree).

>>> The semantic may be thin, if the semantic is thin, then its specification
>>> cannot be said too much thin for the sole reason it's thin.
>>>
>>> Element_Type would be Element + Type, as you say, and also what appears as
>>> the second parameter of an Add method. Its presence as the second
>>> parameter of Add defines what Element_Type is (not just its name “Element”
>>> and its Type status in the Ada source text).
>>
>> It is a language deficiency here, namely the generics. If the type of the
>> class (of the container type) could be properly typed, you would not need
>> to have meaningless names in meaningless packages the only purpose of  
>> which is meaningless instantiation.
> I don't what kind of language construct you imagine, but I am pretty sure  
> these construct would requires dedicated keywords somewhere, some keywords  
> which would be the exact same as the names I am looking for.

Class in T'Class is not a reserved word. Neither Unchecked_Access in
X'Unchecked_Access is. Some Ada's reserved words were promoted for no good
reason, but rather because of Ada 83 tradition.

>> But even with generics, it is another deficiency that the element type (or
>> the class of) cannot be asked from the container type it belongs to, as
>> well as the type of the index and the type of sets of indices.

> Seems you are wishing Introspection in Ada. Funny for someone who dislike  
> languages which provides it ;-)

As I said it is a delicate balance. You can have it neither all nominal nor
all inferred.

> If a container type, named Container_Type can provide itself the type for  
> its index. How can you refer to it, if not via some expression, like  
> "Container_Type.Index_Type"?

T'Index. Note that this is not an expression proper because in a statically
typed language the algebra of types is separated from the core (object)
language. The type and type-valued operations are not the first class
citizens. Types in Ada have a meta language with rudimentary expressions of
its own. Yes it should be extended a bit, but not too much. Otherwise you
could lose the property of being statically typed.

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



  reply	other threads:[~2012-02-13 21:02 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-09 21:10 Convention for naming of packages Yannick Duchêne (Hibou57)
2012-02-09 21:39 ` Jeffrey Carter
2012-02-10 15:07   ` Yannick Duchêne (Hibou57)
2012-02-10 17:04     ` Georg Bauhaus
2012-02-10 17:09     ` Georg Bauhaus
2012-02-10 17:41       ` Yannick Duchêne (Hibou57)
2012-02-13  9:33       ` Yannick Duchêne (Hibou57)
2012-02-11  0:56     ` Randy Brukardt
2012-02-13  3:09       ` BrianG
2012-02-10 17:21   ` Pascal Obry
2012-02-10 18:03     ` Yannick Duchêne (Hibou57)
2012-02-11  1:06     ` Randy Brukardt
2012-02-11  9:22       ` Simon Wright
2012-02-11 10:17         ` Yannick Duchêne (Hibou57)
2012-02-11 19:24           ` Yannick Duchêne (Hibou57)
2012-02-11 20:06             ` Simon Wright
2012-02-12  9:18               ` Yannick Duchêne (Hibou57)
2012-02-12 10:22                 ` Simon Wright
2012-02-13  9:21         ` Yannick Duchêne (Hibou57)
2012-02-12 19:53       ` J-P. Rosen
2012-02-12 21:19         ` Yannick Duchêne (Hibou57)
2012-02-13  8:53           ` Dmitry A. Kazakov
2012-02-13  9:12             ` Yannick Duchêne (Hibou57)
2012-02-13 11:03               ` Dmitry A. Kazakov
2012-02-13 11:57                 ` Yannick Duchêne (Hibou57)
2012-02-13 12:30                   ` Yannick Duchêne (Hibou57)
2012-02-13 13:07                     ` Dmitry A. Kazakov
2012-02-13 14:01                       ` Yannick Duchêne (Hibou57)
2012-02-13 14:59                         ` Dmitry A. Kazakov
2012-02-13 15:05                           ` Yannick Duchêne (Hibou57)
2012-02-13 15:23                             ` Dmitry A. Kazakov
2012-02-14 21:02                               ` Yannick Duchêne (Hibou57)
2012-02-13 13:01                   ` Dmitry A. Kazakov
2012-02-13 13:04                     ` Yannick Duchêne (Hibou57)
2012-02-13 13:19                       ` Dmitry A. Kazakov
2012-02-13 14:20                         ` Yannick Duchêne (Hibou57)
2012-02-13 15:11                           ` Dmitry A. Kazakov
2012-02-13 16:24                             ` Yannick Duchêne (Hibou57)
2012-02-13 17:19                               ` Dmitry A. Kazakov
2012-02-13 18:10                                 ` Yannick Duchêne (Hibou57)
2012-02-13 21:02                                   ` Dmitry A. Kazakov [this message]
2012-02-14  9:08                                     ` Yannick Duchêne (Hibou57)
2012-02-14 13:33                                       ` Dmitry A. Kazakov
2012-02-14 14:40                                         ` Yannick Duchêne (Hibou57)
2012-02-14 15:26                                           ` Dmitry A. Kazakov
2012-02-13 10:45             ` Georg Bauhaus
2012-02-13 10:59               ` Yannick Duchêne (Hibou57)
2012-02-14 10:18           ` Yannick Duchêne (Hibou57)
2012-02-14 11:51             ` Yannick Duchêne (Hibou57)
2012-02-14 22:21               ` Manuel Collado
2012-02-15  4:09                 ` Simon Wright
2012-02-15  6:13                   ` Niklas Holsti
2012-02-15 11:26                     ` Yannick Duchêne (Hibou57)
2012-02-15 11:39                     ` Georg Bauhaus
2012-02-15 11:47                       ` Georg Bauhaus
2012-02-15  6:30                   ` J-P. Rosen
2012-02-15  8:36                     ` Simon Wright
2012-02-15 22:56                     ` Robert A Duff
2012-02-15 11:27                   ` Yannick Duchêne (Hibou57)
2012-02-15 11:43                     ` Georg Bauhaus
2012-02-15 12:33                       ` Georg Bauhaus
2012-02-15 12:55                         ` Yannick Duchêne (Hibou57)
2012-02-15 17:30                           ` Georg Bauhaus
2012-02-09 22:33 ` Simon Wright
2012-02-09 22:35 ` J-P. Rosen
2012-02-10 14:38   ` Yannick Duchêne (Hibou57)
2012-02-10  9:47 ` Mart van de Wege
2012-02-10 14:24   ` Yannick Duchêne (Hibou57)
2012-02-13  3:02     ` BrianG
2012-02-10 12:19 ` Brian Drummond
2012-02-10 14:22   ` Yannick Duchêne (Hibou57)
2012-02-10 19:16   ` Jeffrey Carter
2012-02-11 16:31 ` Martin Dowie
2012-02-16 17:44 ` Convention for naming of anything Yannick Duchêne (Hibou57)
2012-02-17 19:46   ` Yannick Duchêne (Hibou57)
2012-02-17 21:53     ` Manuel Collado
2012-02-17 22:12       ` Yannick Duchêne (Hibou57)
2012-02-17 23:52   ` Adam Beneschan
2012-02-18  0:24     ` Yannick Duchêne (Hibou57)
2012-02-18  0:50       ` Yannick Duchêne (Hibou57)
2012-02-18 22:53         ` BrianG
2012-02-19 11:16           ` Simon Wright
2012-03-06  0:36             ` Randy Brukardt
2012-02-18 11:32   ` Georg Bauhaus
2012-02-18 13:02     ` Yannick Duchêne (Hibou57)
2012-02-19 18:07   ` Phil Clayton
2012-02-19 21:53     ` Yannick Duchêne (Hibou57)
2012-02-20  0:21       ` Phil Clayton
replies disabled

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