Дайте мне посмотреть, смогу ли я пройти через это ясно.Если нет, спросите.
Краткий ответ: xx
имеет специальное значение вместе с Whatever
, поэтому он не создает WhateverCode
, как в остальных примерах.
Давайте посмотрим, смогу ли я получить это прямо с длинным ответом.
Во-первых, определения.* называется Whatever
.Обычно он используется в ситуациях, когда он карри
Я не слишком доволен этим именем, которое указывает на карринг на функциональном языке, но, похоже, не используетсяв этом смысле, но в смысле тушения или выпечки .В любом случае.
Карри превращает его в WhateverCode
.Таким образом, * сам по себе - это «Все, что угодно», * с некоторыми вещами - это «Что бы ни было», создавая блок из воздуха.
Однако это не происходит автоматически, потому что иногда нам нужно, чтобы «Все было просто, что угодно».У вас есть несколько исключений , перечисленных в Whatever
документации .Один из них использует xx
, потому что xx
вместе с Whatever
должны создавать бесконечные списки.
Но это не то, что я делаю, вы можете сказать.*
- это перед числом для умножения.Ну да.Но этот код в Actions.nqp (который генерирует код из источника) ссылается на infix xx
.Так что это на самом деле не имеет значения.
Итак, вернемся к краткому ответу: вы не можете всегда использовать *
вместе с другими элементами для создания кода.Некоторые операторы, такие как тот, .. или ... будут иметь особое значение в непосредственной близости от *, поэтому вам нужно будет использовать что-то еще, например аргументы-заполнители.