|
|
От: | PVA | |
| Дата: | 16.10.06 11:31 | ||
| Оценка: |
|
||
В условиях независимости от внешнего состояния оно может быть распараллелено и в традиционных случаях. Разве нет?Параллелизм
Сериализация не поможет?Горячая замена кода
А с коленки реализация не подойдет?Функции высшего порядка
struct op_t
{
virtual int operator()(int a, int b) = 0;
};
struct op_add : public op_t
{
virtual int operator()(int a, int b)
{
return a + b;
}
};
void show(int a, int b, op_t & op)
{
printf("%d\n", op(a, b));
}
int main(int argc, char* argv[])
{
op_add add;
show(4, 5, add);
return 0;
}и сопутствующий текст выглядит странно....Мы вынуждены создать два новых типа просто для поддержки различного клиентского кода!...
Карринг
#define square(x) pow((x), 2)А разве оптимизаторы нынешние не делают то же самое?Ленивые вычисления
Аналогично функциям высшего порядка.Абстрагирование от управляющих структур
Шаблоны с++ + метапрограммирование?Бесконечные структуры данных
Аналогично функциям высшего порядка.Продолжения
Шаблоны?Сопоставление с образцом
Замыкания
Function makePowerFn(int power)
{
int powerFn(int base)
{
return pow(base, power);
}
return powerFn;
}
Function square = makePowerFn(2);
square(3); // возвращает 9