Вопросы по теме 'hygiene'
Почему этот макрос Джулии _не_ требует `esc`?
Я нашел пример макроса unless в Джулии здесь , написанный как следует:
macro unless(test, branch)
quote
if !$test
$branch
end
end
end
Однако, когда я пытаюсь использовать его, он терпит неудачу (видимо, есть проблема с...
211 просмотров
schedule
23.06.2022
Как сделать часть макроса гигиеничной
Я хотел бы иметь версию lambda под названием lambda-r , из которой можно return . Пример:
(+ ((lambda-r ()
(return 1)
2)) 5)
Это даст значение 6 . Хотя вы могли бы ожидать, что значение будет равно 7, оно равно 6, поскольку 1...
263 просмотров
schedule
27.07.2022
Почему макрогигиена не предотвращает коллизии между несколькими определениями констант?
Я думал, что «гигиена» предотвратит коллизии между X , определенными в моем макросе m! , но это оказалось не так. Что я неправильно понимаю?
macro_rules! m {
($e:expr) => {
const X: i32 = $e;
};
}
m!(0);
m!(1);
fn main() {...
310 просмотров
schedule
17.09.2022
Правила синтаксиса схемы — разница в связывании переменных между (let) и (define)
В спецификации R 5 RS указано, что в рамках требований к макросу, определенному с помощью syntax-rules :
Если преобразователь макроса вставляет свободную ссылку на идентификатор, ссылка ссылается на привязку, которая была видна там, где был...
398 просмотров
schedule
29.09.2022
Написание макроса myletstar (гигиены) на схеме
Я пытаюсь переписать let* макрос гигиены, он у меня как обычный макрос, и я бы хотел, чтобы он был макросом гигиены, если это возможно. У меня нет большого опыта работы с этими типами макросов. Так что я был бы очень признателен за помощь. Также...
100 просмотров
schedule
29.09.2022
Почему грязная инъекция необходима даже для кода в рамках шаблона?
Пожалуйста, обратите внимание на следующее:
import options
template tpl[T](a: untyped) : Option[T] =
var b {.inject.}: T = 4
a
none(int)
discard
tpl[int]:
echo b
Это строит и запускает и приводит к выводу:
4
Но если...
171 просмотров
schedule
18.07.2023
Передача макропеременной в функцию для интерполяции
Я пытаюсь написать макрос, который оценивает выражение, а затем сравнивает его с несколькими значениями. Я уменьшил проблему до меньшего примера для этого поста.
macro small_bad(item)
quote
$(use_val(esc(item)))
end
end
function...
50 просмотров
schedule
16.01.2023
Вызов макроса против среды определения макроса в Julia
Я пытаюсь понять смысл утверждения в документации по метапрограммированию Джулии на макросигиена . В документации утверждается, что
Макроэкспандер Джулии решает эти проблемы следующим образом. Во-первых, переменные в результате макроса...
676 просмотров
schedule
15.01.2024