Page Summary
thedeemon.livejournal.com - (no subject)
nicka-startcev.livejournal.com - (no subject)
zeux.livejournal.com - (no subject)
wizzard - (no subject)
wizzard - (no subject)
wizzard - (no subject)
wizzard - (no subject)
zhengxi.livejournal.com - (no subject)
zhengxi.livejournal.com - (no subject)
wizzard - (no subject)
insooo.livejournal.com - (no subject)
wizzard - (no subject)
insooo.livejournal.com - (no subject)
zhengxi.livejournal.com - (no subject)
zhengxi.livejournal.com - (no subject)
insooo.livejournal.com - (no subject)
insooo.livejournal.com - (no subject)
zhengxi.livejournal.com - (no subject)
wizzard - (no subject)
wizzard - (no subject)
zhengxi.livejournal.com - (no subject)
zhengxi.livejournal.com - (no subject)
udpn.livejournal.com - (no subject)
wizzard - (no subject)
udpn.livejournal.com - (no subject)
udpn.livejournal.com - (no subject)
udpn.livejournal.com - (no subject)
wizzard - (no subject)
wizzard - (no subject)
zhengxi.livejournal.com - (no subject)
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags
no subject
Date: 2009-10-16 05:09 am (UTC)no subject
Date: 2009-10-16 05:27 am (UTC)В крайнем случае sXXX и uXXX.
no subject
Date: 2009-10-16 05:55 am (UTC)no subject
Date: 2009-10-16 06:12 am (UTC)Или вообще int<allowedRanges> something.
В дотнет-ипостаси можно
[Range(xxx,yyy), Range(xxx,yyy)] int something. Только вот оно останется с полем, а не с переменной. Хотя иногда это вполне desired behaviour.
И int<unbounded>, естественно.
Последний, правда, вызывает вопрос о IntegerOverflowException vs OutOfMemoryException.
И еще немного непонятно, как их друг другу присваивать :)
no subject
Date: 2009-10-16 06:14 am (UTC)no subject
Date: 2009-10-16 06:17 am (UTC)а вот чтобы assert(set([A,B]+[A,C,D])==[A,B,C,D]) проверялся статически - до этого, увы, далеко.
no subject
Date: 2009-10-16 06:17 am (UTC)no subject
Date: 2009-10-16 07:18 am (UTC)может еще где-то, не знаю.
no subject
Date: 2009-10-16 07:21 am (UTC)vector<int, 0..8> (массив интов размером от 0 до 8)
при небольшой верхней границе это можно скомпилять без динамического выделения, при большой - с ним.
no subject
Date: 2009-10-16 08:26 am (UTC)no subject
Date: 2009-10-16 08:54 am (UTC)Choosing a programming language is like choosing a bar..
no subject
Date: 2009-10-16 09:31 am (UTC)no subject
Date: 2009-10-16 09:45 am (UTC)My point is, если хочется ограничивать диапазон допустимых значений, то нужно ограничивать диапазон интерпретаций, а не влиять на представление. Проще говоря если понимать int *меньше* numberBits *больше* как попытку сделать представление в битах определенной длинны, то это либо бред, либо misleading из-за названия типа и параметра типа. =P
no subject
Date: 2009-10-16 10:11 am (UTC){
int<1..5> a;
int<1..5> b;
int<0..9> c;
}
А может и 3 DWORD'а сделать, смотря что эффективней
это не сделать только задавая длину поля в битах
no subject
Date: 2009-10-16 10:13 am (UTC)no subject
Date: 2009-10-16 10:54 am (UTC)Другое дело что тогда выброс исключения\assert\what-you-have будут локализованы, но ни что не мешает написать приблизительно тоже самое сейчас в виде типа данных с контрактом на изменение значения представленное базовым интом.
no subject
Date: 2009-10-16 10:56 am (UTC)no subject
Date: 2009-10-16 11:42 am (UTC)Fixed point (подобный тип есть в Limbo, хотя integer range там нет):
fixed<-180, +180, 1/60/60> longitude_in_seconds;
Floating point:
fixed<(-2**53)..(2**53-1), 2**(−1022..1023)> d;
:)
no subject
Date: 2009-10-16 05:05 pm (UTC)Ну так речь и идет о том, что мы декларируем платформонезависимые диапазоны, а при запуске бинарника на разных платформах получаем разный ассемблерный код и разную паковку структур в памяти.
no subject
Date: 2009-10-16 05:07 pm (UTC)no subject
Date: 2009-10-16 05:27 pm (UTC)no subject
Date: 2009-10-28 09:15 am (UTC)идея бродит в умах :)
no subject
Date: 2009-11-28 08:17 pm (UTC)no subject
Date: 2009-11-28 10:41 pm (UTC)no subject
Date: 2009-11-28 11:29 pm (UTC)Наборы — частный случай данных. Либо появится возможность статически обрабатывать любые данные, либо даже статические проверки для сетов не помогут.
зы Кстати, это еще и затребует от языка иметь intrinsic set. А хотелось бы в стандартной библиотеке.
no subject
Date: 2009-11-28 11:30 pm (UTC)no subject
Date: 2009-11-28 11:39 pm (UTC)range<0, 255> a;
range<-10, 10> b;
a += b; // Error: Range check failed
хотя его довольно просто написать. Быть может, это никому не нужно?
ps Какбы намекну, что множество всех предикатов значительно мощнее множества предикатов вида P = {a <= x <= b}.
no subject
Date: 2009-11-28 11:46 pm (UTC)(Стандартная библиотека != язык, их можно туда дописывать)
no subject
Date: 2009-11-28 11:47 pm (UTC)no subject
Date: 2009-11-29 12:54 am (UTC)А выбирать storage type (сколько бит выделять) в зависимости от ranges и результатов операций над ними - было бы не плохо.