1

Тема: Что такое функция?

В Канторе функция -- это явным образом определенное формальное правило получения результата из переданных параметров и/или контекста функции. Беспараметрические функции вычисляются только из своего контекста.

Результат функции -- одна или несколько сущностей, соответствующих уровню абстракции функции. Вычисление результата не изменяет передаваемых параметров и контекста вычислений.

Разновидности функций:

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

  • По контексту вычисления:

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

    • Класс -- беспараметрическое обобщение.

    • Свойство -- функция, вычисляемая в контексте объекта -- экземпляра класса, результатом которой является кортеж объектов. Помимо свойств-функций есть также свойства-процедуры, так что свойство -- многозначный термин в Канторе.

    • Замыкание -- функция, вычисляемая в контексте другой функции.

  • Итератор -- пошаговая функция, выполняющаяся в контексте (чего? только объекта?) и возвращающая результат на каждом шаге. Теоретически допустимы итераторы-обобщения, но их практический смысл пока неясен.

  • Абстрактная функция -- функция, правило вычисления которой будет задано в потомках -- обобщениях-потомках или классах-потомках.

Еще нужно определить понятие прототипа функции и перегрузки, дать примеры.

2

Re: Что такое функция?

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

3

Re: Что такое функция?

kdenis пишет:

Для наглядности каждому типу полезно иметь пример кода, наверное.

Да, кэп. Выше написано, кэп. smile

4

Re: Что такое функция?

Utkin пишет:

Что значит выполняющиеся в контексте? И как это должно выглядеть в коде, как пошаговая функция?

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

Добавлено 01.07.2015 в 18:05

Итераторы записываются при помощи итераций -- конструкций с from и where, что делает их особым видом функций. Результат вычисления итератора может быть присвоен контейнеру, либо свернут в кортеж при помощи агрегатной функции.

Добавлено 22.04.2016 в 3:14

Сообщение про кортежи выделено в отдельную тему.