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
next prev parent 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