Определение языка R. Версия 3.5.2 (2018-12-20) DRAFT. Александр Александрович Фоменко
Чтение книги онлайн.

Читать онлайн книгу Определение языка R. Версия 3.5.2 (2018-12-20) DRAFT - Александр Александрович Фоменко страница 4

СКАЧАТЬ Различия между ними заключается в обработке аргумента. Все собственные аргументы встроенных функций оцениваются и передаются внутренней функции в соответствии с вызовом по значению, тогда как специальные функции передают не оцененные аргументы внутренней функции.

      Для языка R эти объекты – только другой вид функции. Функция is.primitive может отличить их от интерпретируемых функций.

      2.1.9. Обещанные объекты

      Объекты обещания – часть механизма отложенных вычислений R. Они содержат три слота: значение, выражение и окружающая среда. При вызове функции сравниваются аргументы, а затем каждый из формальных аргументов является обязательством к обещанию. Выражение, которое было дано для формального аргумента, и указатель на окружающую среду функции вызываются из сохраненных в обещании.

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

      В пределах языка R объекты обещания видимы почти неявно: фактические аргументы функции имеют этот тип. Есть также функция delayedAssign, которая сделает обещание из выражения. Отсутствует какой-либо способ в коде R для проверки, является ли объект обещанием или нет, и при этом нет способа использовать код R для определения окружающей среды обещания.

      2.1.10. Точка-точка-точка

      Тип объекта «…» хранится как тип pairlist. К компонентам «…» можно получить доступ обычным pairlist способом из кода C, но не легко получить доступ как к объекту в интерпретируемом коде. Объект может быть получен как список, так, например, в таблице ниже:

      args <– list (…)

      ##…

      for (a in args) {

      ##…

      Если функция имеет «…» в качестве формального аргумента, который не соответствует формальным аргументам, то им сопоставляется «…».

      2.1.11. Окружающая среда

      Будем считать, что окружающие среды могут состоять из двух частей. Фрейм, состоящий из набора пар символ-значение, и обертка — указатель на обертку окружающей среды. Когда R ищет значение для символа, исследуется фрейм и, если соответствующий символ будет найден, его значение будет возвращено. В противном случае получают доступ к обертке окружающей среды, и процесс повторяется. Окружающие среды формируют древовидную структуру, в которой обертки играют роль родителей. Дерево окружающих сред имеет корень в пустой окружающей среде, доступной через emptyenv (), у которой нет родителя. Корень – прямой родитель окружающей среды основного (base) пакета (доступной через функцию baseenv ()). Прежде у baseenv () было специальное значение NULL, но начиная с версии 2.4.0 использование NULL, является не допустимым в качестве СКАЧАТЬ