Функции не имеют имен в R. Если вы случайно не поместили функцию в переменную или нет, это не свойство самой функции, поэтому не существует два вида функций: анонимная ипо имени.Лучшее, что мы можем сделать - это согласиться на вызов функции, которая никогда не была назначена анонимной переменной.
Функция f
может рассматриваться как тройка, состоящая из ее формальных аргументов, ее тела и ее окружения.доступны индивидуально через formals(f)
, body(f)
и environment(f)
.Имя не является частью этой тройки.См. функциональные объекты часть определения языка manual .
Обратите внимание, что если мы хотим, чтобы функция вызывала себя сама, мы можем использовать Recall
, чтобы не знать,или нет функция была назначена переменной.Альтернатива состоит в том, что тело функции должно знать, что функция была назначена определенной переменной и каково имя этой переменной.То есть, если функция назначена, например, переменной f
, то тело может обратиться к f
, чтобы вызвать себя.Recall
ограничен функциями самовызывания.Если у нас есть две функции, которые взаимно вызывают друг друга, то аналога Recall
не существует - каждая функция должна называть другую, что означает, что каждая функция должна быть назначена переменной, и каждое тело функции должно знать имя переменной, котороедругая функция была назначена.