Функой будем называть объект, который, с одной стороны, подобно функции, может быть "вызван", и с другой стороны, подобно данным, может быть скопирован, удален, или изменен. Вообще-то, в С++ уже давно есть понятие функторов (объекты, переопределяющие оператор вызова). Хотя по описанию это довольно похоже на функу, эти понятия отличаются. Прежде всего, не любой функтор является функой. С другой стороны, хотя любую известную мне функу теоретически можно записать в виде функтора С++, но такая запись часто оказывается очень громоздкой, а многие алгоритмы работы с функами не могут быть обобщены средствами С++ даже при активном использовании template'ов.

Функтором, в отличие от "функторов С++", мы будем называть операцию, которая возвращает функу или несколько функ.

Дискуссия по поводу функ шла в течение нескольких сотен постов, и, надеюсь, еще не закончена. Пока что я не стану размещать здесь выдержки из дискуссии.

  • Мое мнение по поводу того, почему понятие функи важно, и в какую сторону его следует развивать, лежит здесь.
  • Вопросы наиболее удобного синтаксиса функторного языка и его возможной оптимальной реализации будут размещены здесь.
  • Заметки по поводу выражения понятия инвариантов на этом языке, конструирования классов функций с заданными свойствами и поиска конкретной функции вэтих классах будут находиться здесь

  • Hosted by uCoz