Re[3]: Функциональное программирование для всех
От: 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

Не совсем понятно, каким образом происходит вызов powerFn неявно, аналогично с инкрементом.
А реализовано может быть через те же функторы.

В свете изложенных соображений, что мешает програмить на с++ в ФП?
newbie
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.