kouzdra - January 2nd, 2008

January 2nd, 2008

January 2nd, 2008
07:56 pm

[Link]

Задумался - интересно а как проще всего сейчас приобрести в собственную собственность (или взять напочитать, но на довольно длительное время) "Капитал" и избранные труд В.И.Ленина (пока - в объеме для советских студентов). Желательно в бумажном виде.

А то есть ощущение, что пора обновить воспоминания давних времен.

(13 comments | Leave a comment)

TimeEvent
11:00 pm

[Link]

Про throw
Есть такой забавный факт - throw в C++ является не оператором, а операцией - чтобы можно было писать что-то вроде:

(p == NULL ? throw BadPointer (p) : *p)

При этом возникают понятные проблемы с его типом - поскольку никакого осмысленного типа, кроме void, throw в C++ приписать понятно что нельзя. При этом однако возникает трабл - что тип условного выражения получался бы void, что малосодержательно.

Потому есть просто специально обученное правило, что в таком условном выражении его типом является тип того варианта, который ничего не кидает. Проблему это отчасти фиксит, но если throw захочется засунуть в какую-нибудь функцию (я обычно завожу ее для выкидывания обломов) - работать не будет.

Решение у трабла по идее простое - заводится парный к void тип - any, который является супертипом всех типов (а значений, как и void не имеет). В функциональных языках примерно так и сделано - только для этих целей используется тип forall a.a, но вот почему кажется ни в одном вообще процедурном языке такого не делали - загадка (в Algol-68, где в аналогичном контексте можно было писать goto, было придумано специально обученное преобразование типа, которое умело преобразовывать goto во что угодно - проблему в общем случае это тоже не решало)

(41 comments | Leave a comment)

Previous Day 2008/01/02
[Archive]
Next Day
My Website Powered by LJ.Rossia.org