Почему стандарт С ++ до сих пор не включает файловую систему и работу в сети? [закрыто]

Этот ответ не сильно отличается от других, он просто не предполагает, что вы изначально хотите изучить несколько новых функций и понятий, чтобы понять, что происходит:

  1. + это символ, расположенный в clojure.core, который по умолчанию доступен для вашего кода.
  2. Когда вы используете в своем коде без каких-либо очень продвинутых намерений, например, цитируя его или обнаруживая его класс, clojure будет искать Вар, на который он указывает.
  3. Если этот Var является функцией, когда + используется в позиции заголовка списка, clojure попытается вызвать эту функцию (NullPointerException, если этот Var не указал на функцию). Если в качестве аргумента используется другая функция, эта функция может сделать то же самое, чтобы вызвать ее. Вот как работает вызов функции.

дополнительные комментарии для округления:

Большинство или все языки используют таблицы символов. Будучи несколько динамичным языком, Clojure использует этот дополнительный слой косвенности (функция Symbol → Var →, а не только функция Symbol →), так что динамическое переписывание, какая функция привязана к тому или иному символу, является более выполнимой и элегантной, и это иногда источник любопытства для начинающих.

Поскольку другие ответы несколько чрезмерно подчеркнуты, вы можете в противном случае выполнить причудливый материал , как и цитату ('+), чтобы избежать его оценки, или даже проверить его с помощью class и / или resolve, как будто вы заинтересованы в том, чтобы проверить, что это (class), или какое пространство имён находится (resolve). Вы также можете вытолкнуть в пункте var, через пункты var или #'. Обычно вы делаете эти причудливые вещи, если пишете макросы или если вы очень экспериментально настроены, особенно при работе в repl; в зависимости от того, в каком стиле вы пишете свои макросы, вы можете на самом деле довольно много цитировать в них.

и причудливая иллюстрация для экстра-исследовательского человека:

Будучи несколько гибким языком, clojure предоставляет api для использования функции Symbol → Var → самостоятельно. Обычно вы никогда не делали этого только для использования функции, потому что, очевидно, это было бы скучно и избыточно, но оно может быть использовано здесь для иллюстрации процесса:

(deref (resolve '+))

А именно, первый символ разрешенному его Вар, тогда вещь, на которую указывает Вар, прибывает. Это просто иллюстрирует двухэтапный процесс для получения функции (функция «Символ → Вар →)), которая происходит за кулисами. Надеюсь, вы избежали чтения этой дополнительной части.


TL; DR

ответ на исходный вопрос просто: Да.

-11
задан Youda008 5 May 2015 в 18:09
поделиться