Описание тега hygiene
1
ответ
Создание большого количества частных классов - плохой стиль?
Я делаю проект на Java, который имеет много методов, которые требуют нескольких возвращаемых объектов. Для этого я должен продолжать создавать частные классы, которые инкапсулируют возвращаемые объекты. Объекты имеют смысл, так как FontResult в моем…
19 июл '16 в 13:06
0
ответов
Как пометить плохой код
Я хочу пометить плохой код (как рекомендует GSL), что будет лучшим способом сделать это? Например, приведенная ниже функция foo (не лучший пример, который я мог бы легко исправить самостоятельно). void foo(std::string& s){ std::cout << s; …
20 сен '16 в 06:58
1
ответ
Какова цель синтаксических объектов в схеме?
Я пытаюсь написать небольшой язык, похожий на схему, на python, чтобы попытаться лучше понять схему. Проблема в том, что я застрял на объектах синтаксиса. Я не могу их реализовать, потому что не очень понимаю, для чего они и как они работают. Чтобы …
16 мар '13 в 16:43
3
ответа
Написание myletstar макроса (гигиена) в схеме
Я пытаюсь переписать let* макрос гигиены, у меня он есть как обычный макрос, и я хотел бы иметь его как макрос гигиены, если это возможно. У меня не слишком много опыта с этими типами макросов. Так что я был бы очень признателен за помощь. Также мое…
11 апр '18 в 17:38
2
ответа
Почему грязное внедрение необходимо даже для кода в области видимости шаблона?
Пожалуйста, примите во внимание следующее: import options template tpl[T](a: untyped) : Option[T] = var b {.inject.}: T = 4 a none(int) discard tpl[int]: echo b Это создает и запускает и приводит к выводу: 4 Но если вы удалите {.inject.} Прагма, вы …
31 мар '18 в 10:08
1
ответ
Макрос ракетки, генерирующий ошибку вложенного модуля
Экспериментируя с макросами ракетки, я наткнулся на определение, которое поначалу не было для меня очевидным, почему оно было отклонено. Код короткий и, вероятно, бесполезен, но выглядит так: #lang racket (define-syntax (go stx) (syntax-case stx () …
15 июл '18 в 20:09
1
ответ
В чем разница между датум-> синтаксис и синтаксис #'в теле определения-синтаксиса?
Тестовый код: (define-syntax (test-d stx) #'(begin (define (callme a) (writeln a)))) (define-syntax (test-e stx) (datum->syntax stx '(begin (define (callme2 a) (writeln a))))) > (test-d) > (callme 1) . . callme: undefined; cannot reference …
05 апр '18 в 09:43
1
ответ
Почему гигиена макросов не предотвращает коллизии между множественными определениями const?
Я думал, что "гигиена" предотвратит столкновения между Xопределены в моем макросе m! но оказалось, что это не так. Что я недопонимаю? macro_rules! m { ($e:expr) => { const X: i32 = $e; } } m!(0); m!(1); fn main() { m!(2); m!(3); } Детский манеж С…
26 мар '16 в 21:00
1
ответ
Написание макроса `define-let` с гигиеной
Я пытаюсь написать define-let макрос в ракетке, который "сохраняет" заголовок (let ((var value) ...) ...) а именно только (var value) ... часть, и позволяет повторно использовать это позже. Код ниже работает как ожидалось: #lang racket ;; define-let…
08 июн '15 в 14:02
6
ответов
Может ли кто-нибудь объяснить мне понятие "гигиена" (я программист)?
Итак... Я новичок в схеме r6rs и изучаю макросы. Может кто-нибудь объяснить мне, что означает "гигиена"? Заранее спасибо.
09 июн '10 в 22:36
8
ответов
Коллекция отличных приложений и программ с использованием макросов
Я очень очень заинтересован в макросах и только начинаю понимать его истинную силу. Пожалуйста, помогите мне собрать некоторые замечательные примеры использования макросистем. Пока у меня есть эти конструкции: Шаблон соответствия: Эндрю Райт и Брюс …
28 дек '10 в 19:20
1
ответ
Внедрение переменных в выражение в кавычках
У меня есть выражение в кавычках, например: ast = quote do IO.puts x end И я хочу ввести переменную в выражение, чтобы х имел значение, и выражение не вызовет CompileError из-за x быть неопределенным при оценке следующим образом: Code.eval_quoted as…
06 сен '15 в 16:03
1
ответ
Как сделать только часть макроса гигиенической
Я хотел бы иметь версию lambda, называется lambda-rиз которого вы можете return, Пример: (+ ((lambda-r () (return 1) 2)) 5) Это дало бы ценность 6, Хотя вы можете ожидать, что значение будет 7, оно равно 6, потому что 1 возвращается из лямбда-выраже…
10 июл '10 в 20:02
1
ответ
Параметр синтаксиса, указывающий на переменную шаблона синтаксиса?
syntax-parameterize обычно используется в сочетании с make-rename-transformer так что синтаксис-параметр p ведет себя как псевдоним для другого идентификатора: #lang racket (require racket/stxparam) (define-syntax-parameter p #f) (define-syntax (tes…
30 авг '16 в 16:43
1
ответ
Странная гигиена в макросах
Предположим, у меня есть это макроопределение в модуле: module Example export @example_macro macro example_macro(a) quote local r = RemoteRef() put!(r, $(esc(a))) remotecall_fetch(2, (r) -> fetch(r), r) end end end И вот его расширение: julia>…
05 окт '14 в 17:30
1
ответ
Динамически префикс имени макроса с помощью макроса variadic
Фон Я использовал набор макросов препроцессора из другого вопроса, который позволяет мне ставить префиксы имен символов (перечисления, имена функций, имена структур и т. Д.) В моем источнике, то есть: #include <stdio.h> #define VARIABLE 3 #de…
29 ноя '17 в 16:10
0
ответов
Какую технологию я могу использовать для поддержания хорошей гигиены данных в озере данных?
В частности, мне интересно, какие компании используют для "утечки" и "пополнения" информационного озера по мере изменения информационных потребностей. В основном, какие инструменты используют компании для поддержания хорошей гигиены данных. Если кто…
20 сен '18 в 21:36
3
ответа
Макроопределяющий макрос в Racket?
В Common Lisp относительно легко создать макрос, определяющий макрос. Например, следующий макрос (defmacro abbrev (short long) `(defmacro ,short (&rest args) `(,',long ,@args))) является макросом, определяющим макрос, потому что он расширяется д…
27 окт '14 в 21:15
1
ответ
Почему этот макрос Джулии _не_ требует `esc`?
Я нашел пример unless Макрос у Юлии здесь записан так: macro unless(test, branch) quote if !$test $branch end end end Тем не менее, когда я пытаюсь использовать его, он терпит неудачу (очевидно, есть проблема гигиены, но я не могу понять это точно).…
20 окт '15 в 04:57
1
ответ
Синтаксические правила схемы - Разница в привязках переменных между (let) и (define)
Спецификация R5 RS гласит, что как часть требований для макроса, определенного с использованием syntax-rules: Если макротрансформатор вставляет свободную ссылку на идентификатор, ссылка ссылается на привязку, которая была видна там, где был указан п…
03 ноя '11 в 17:13