Le 14/11/2012 22:13, Walter Bright a écrit :
On 11/14/2012 2:53 AM, Jacob Carlborg wrote:
If "std.mytypes.mystring" is a variable of the type "string" then the
fully
qualified name is lost if it's used as an attribute. Something like this:

I am having a REALLY hard time making my point here.

struct MyString
{
string s;
}

Now use MyString as an attribute. No, the name is not lost. Yes, two
different modules can use MyString as an attribute, and impute
completely different meanings into it.

Just because it is not a builtin type does not change anything.

I seriously feel like I'm in Alice in wonderland here.

A type is a meaning associated to data. For instance, char[] is an array of char. Note that you can store pointers, integer, or basically anything in that memory. But you don't, because this type give you information about what in this memory, and storing anything else would be confusing as hell.

The same way, I can throw a FileExeption every time a problem occurs in any of my programs. That would be insane, but i CAN do that.

Well, the same way, I can subvert attribute in any convoluted way I want to. But that make no sens at all (and I don't expect any codebase using such techniques to become really big).

The whole point of attaching data to a symbol via attribute is to provide a meaning attached to that symbol. The meaning is given by the type, like it does everywhere else.

Your MyString example or an int is a perfect example of a type that have no meaning. Your argument is just like we shouldn't put any protection near a precipice since people can throw themselves over it anyway. Yeah, but at least, they'll do it on purpose and assume the consequences, and that is a huge win.

Reply via email to