История изменений
Исправление www_linux_org_ru, (текущая версия) :
или вот так — что больше, 0x70000000 или 0x90000000 ?
Что значит «больше»? Не понимаю вопроса :(
ну вот, ты не знаешь, как применить к этим бинарным данным определенную функцию; это намек тебе, что определение типа как множества несовершенно — ты должен был сказать что-то про операции
при этом известно, что эти 4 байта представляют собой неразмеченный
Какая разница что они представляют? Забудь, эта информация бесполезна и ни на что не влияет. У тебя есть два байта - все. Это первично.
байты важны, но не первичны; важно именно что, что эти байты представляют
Система типов должна моделировать возможности различать эти байты - и более ничего, это ее цель.
на всякий случай замечу, что типы могут быть не только у значений (это функционалистский взгляд) но и у переменных, которые конкретными байтами сейчас не являются; да и еще значение может быть optimized out, и опять байтами не являться
значение в программе может быть представлено очень интересно, не только байтами, например
void print1() { putchar( 0x31 ); } // значение '1' в ascii и юникоде
register int x = ... ;
if(x==1 /* сразу после сравнения регистр, где лежал х, можно затереть */) {
print(x) ; // может быть оптимизированно до print1();
} // ^ вот это х по твоему что, не значение? но бинарно его нигде нет
Примитивные системы типов просто делают это плохо, в итоге появляются какие-то «представления» и прочая чушь - вплоть до того, что типы могут быть у термов (это как же надо оболбаться, чтобы такую хуйню на полном серьезе рассматривать?!)
да, типы могут быть у термов, *например*, после того, как известны типы составных частей термов
скажем, у терма x+y может быть тип int, если известно, что такой тип имели x, y, и оператор + этот тип сохраняет,
а так же у него может быть тип вот уж не знаю что, но что-то большее (полиморфного) нуля из некого множетсва с коммутативной операцией «+» и с порядком «>», согласованным c операцией «+», если такой тип имели x, y
или одно и то же значение может иметь разный тип, в зависимости от того в каком терме оно появляется, причем один тип не является подтипом другого! Бред полный.
конечно может
скажем, значение 0 может иметь 2 типа неотрицательное_целое и неположительное_целое; при этом, оно будет иметь эти разные типы, в зависимости от терма — а еще точнее, от контекста, где мы, скажем, накапливаем в некоторую переменную сумму соответствующего знака
Исходная версия www_linux_org_ru, :
или вот так — что больше, 0x70000000 или 0x90000000 ?
Что значит «больше»? Не понимаю вопроса :(
ну вот, ты не знаешь, как применить к этим бинарным данным определенную функцию; это намек тебе, что определение типа как множества несовершенно — ты должен был сказать что-то про операции
при этом известно, что эти 4 байта представляют собой неразмеченный
Какая разница что они представляют? Забудь, эта информация бесполезна и ни на что не влияет. У тебя есть два байта - все. Это первично.
байты важны, но не первичны; важно именно что, что эти байты представляют
Система типов должна моделировать возможности различать эти байты - и более ничего, это ее цель.
на всякий случай замечу, что типы могут быть не только у значений (это функционалистский взгляд) но и у переменных, которые конкретными байтами сейчас не являются; да и еще значение может быть optimized out, и опять байтами не являться
значение в программе может быть представлено очень интересно, не только байтами, например
void print1() { putchar( 0x31 ); } // значение '1' в ascii и юникоде
register int x = ... ;
if(x==1 /* сразу после сравнения регистр, где лежал х, можно затереть */) {
print(x) ; // может быть оптимизированно до print1();
} // ^ вот это х по твоему что, не значение? но бинарно его нигде нет
Примитивные системы типов просто делают это плохо, в итоге появляются какие-то «представления» и прочая чушь - вплоть до того, что типы могут быть у термов (это как же надо оболбаться, чтобы такую хуйню на полном серьезе рассматривать?!)
да, типы могут быть у термов, *например*, после того, как известны типы составных частей термов
скажем, у терма x+y может быть тип int, если известно, что такой тип имели x, y, и оператор + этот тип сохраняет,
а так же у него может быть тип вот уж не знаю что, но что-то большее (полиморфного) нуля из некого коммутативного моноида с операцией «+» и с порядком «>», согласованным c операцией «+», если такой тип имели x, y
или одно и то же значение может иметь разный тип, в зависимости от того в каком терме оно появляется, причем один тип не является подтипом другого! Бред полный.
конечно может
скажем, значение 0 может иметь 2 типа неотрицательное_целое и неположительное_целое; при этом, оно будет иметь эти разные типы, в зависимости от терма — а еще точнее, от контекста, где мы, скажем, накапливаем в некоторую переменную сумму соответствующего знака