Поиск имени для абстрактного класса, который моделирует функции как объекты

Поиск имени для абстрактного класса, который моделирует функции как объекты
Поиск имени для абстрактного класса, который моделирует функции как объекты - guyyama @ Unsplash

В математике сложение двух функций можно считать операцией в пространстве функций. Результатом является другая функция.

Я могу смоделировать это, сделав функции абстрактным классом и реализовав для него все соответствующие операторы. Объекту этого класса можно присвоить базовые функции (например, константу), а операторы можно использовать для построения более сложных функций. Эти объекты могут быть, например, оценены или дифференцированы

Как правильно назвать такой абстрактный класс? Очевидно, что функция - вполне адекватный термин в математическом смысле, но неоднозначный в программировании.

Я смутно помню, что кто-то называл его functor, но исследование этого термина привело к чему-то другому.

Вы можете посмотреть, что делают другие люди:

Я смутно помню, как кто-то называл это функтором, но исследование этого термина привело к чему-то другому.

Помните, что слово означает только то, что человек, использующий это слово, хочет, чтобы оно означало. Ни больше ни меньше.

В данном конкретном случае есть по крайней мере три разных значения в трех разных контекстах, о которых я знаю:

  • В математике, особенно в теории категорий, функтор — это (грубо говоря) «нечто, что можно отобразить» или «вычисления с учетом контекста». Это слово также используется во многих сообществах языков программирования, например, в Haskell , Scala (например, кошки и Scalaz ) и Python.
  • В ML функтор — это имя, данное конструктору уровня модуля, который может создавать модули из других модулей. Это похоже на конструктор типа (также известный как универсальный), который может создавать типы из других типов, или конструктор значений (также известный как функция), который может создавать значения из других значений. Другими словами, в ML функтор для модулей — это то же самое, что функция для значений и конструктор типов для типов.
  • В C++ функтор — это любой объект, имеющий operator(), то есть любой объект, который можно вызвать так, как если бы он был функцией. Хотя это почти исключительно использование термина C++, это также то, как этот термин используется в некоторых других сообществах языков программирования. Как ни странно, это включает в себя сообщества, которые также используют термин в первом смысле, поэтому вам действительно нужно смотреть на каждый отдельный проект и каждого отдельного человека, как они используют этот термин.

Вкратце: вы можете называть это как хотите, если вы определяете, что имеете в виду.


LetsCodeIt, 29 декабря 2022 г., 10:15