Описание тега define-syntax
2
ответа
Сделайте мой цикл while, используя "define-syntax-rule"
Я пытаюсь создать свой собственный цикл while в ракетке, используя "define-syntax-rule". Я хочу, чтобы он основывался на процедурном подходе, поэтому никаких вспомогательных функций (то есть просто использование лямбды, let, letrec и т. Д.) У меня е…
26 фев '17 в 22:34
1
ответ
На схеме R5RS определение-синтаксис игнорируется?
Только начал изучать Схему. Я использую Dr. Racket в качестве моего компилятора / интерпретатора. Мне нужны некоторые функции String (точнее, string-replace), поэтому я скопировал из SRFI 13. Когда я проверяю это, это показывает.. reference to undef…
26 фев '12 в 04:00
2
ответа
Гигиенический макрос r7rs: вернуть значение второго выражения
В настоящее время я изучаю некоторые r7rs и пытаюсь реализовать макрос 'begin' следующим образом: (begin0 expr0 expr1 ... expr2) С expr, являющимся регулярным выражением (Like (set! X (+ x 1))) И begin0 как макрос, который вычисляет все выражения, н…
27 ноя '18 в 15:14
1
ответ
Как транспонировать последовательность шаблонов в макросе схемы?
Я написал следующий макрос схемы. (define-syntax join (syntax-rules () ((join (var ...) (val ...) ...) '(((var val) ...) ...)))) Когда я попробую это (join (a b c) (1 2 3) (2 4 6) (3 6 9)) он возвращает следующий результат. (((a 1) (a 2) (a 3)) ((b …
09 мар '17 в 15:32
1
ответ
Почему в определении-синтаксиса my-class есть только один метод?
(define-syntax my-class (syntax-rules () [(my-class <class-name> (<attr> ...) (method (bigger-x other) (> x (other 'x)))) (define (<class-name> <attr> ...) (lambda (msg) (cond [(equal? msg (quote <attr>)) <attr>…
07 дек '18 в 08:48
2
ответа
Ошибка при расширении макроса в Chicken Scheme
Я изучаю, как работает система макросов в Scheme, и пытаюсь сделать мой код более похожим на JavaScript. Поэтому я подумал, что начну с function макро. Вот как я хочу, чтобы определение функции выглядело так: (function id (x) x) Следует расширить до…
14 апр '13 в 10:15
1
ответ
Как вызвать другие макросы из макроса Chicken Scheme?
Я пытаюсь перейти от Common Lisp к Chicken Scheme, и у меня много проблем. Моя текущая проблема заключается в следующем: Как я могу написать макрос (предположительно с использованием define-syntax?) что вызывает другие макросы? Например, в Common Li…
08 авг '16 в 01:39
3
ответа
Захват макросов в схеме
Какой самый простой способ определить макрос захвата, используя define-syntax или же define-syntax-rule в ракетку? В качестве конкретного примера, вот тривиальный aif в макросистеме в стиле CL. (defmacro aif (test if-true &optional if-false) `(l…
18 ноя '13 в 17:44
2
ответа
Макеты ракеток - создание пар
Я только начал погружаться в макросы Racket и пытаюсь сделать краткий простой макрос, определяющий макрос. Я хотел бы расширить выражение как это: (macro id (param) replacement1 (params ...) replacement2) На что-то вроде этого: (define-syntax id (sy…
25 мар '12 в 13:48
2
ответа
Макрос ракетки, который определяет несколько форм верхнего уровня?
Я определил параметры синтаксиса с идентичными определениями, за исключением их имени, поэтому решил написать макрос, чтобы сделать это проще: (define-syntax (test-case-parameter stx) (syntax-parse stx [(_ parameter:id) #'(define-syntax-parameter pa…
25 сен '16 в 18:52
1
ответ
Как векторные шаблоны используются в синтаксических правилах?
Я писал макросы Common Lisp, поэтому макросы R5R в Scheme для меня немного неестественны. Я думаю, что у меня есть идея, за исключением того, что я не понимаю, как можно использовать векторные шаблоны в синтаксических правилах: (define-syntax mac (s…
26 мар '10 в 21:11
4
ответа
Что, если таковые имеются, не так с этим определением letrec в Схеме?
R5RS дает предложенные определения макросов для библиотечных форм синтаксиса: http://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-10.html Это также определяет letrec, очень сложным способом, конечно, не так, как я бы его определил, я бы прост…
14 май '10 в 15:57
1
ответ
Как использовать переменную #define в качестве параметра метода в задаче C
Я довольно новичок в Objective-C и что я хочу сделать, это определить переменные в EntityNameConstants.h файл, в котором я храню все имена сущностей. И я буду использовать все определения в хранилище для всех методов, связанных с ManagedObjectContex…
26 ноя '13 в 00:27
2
ответа
Функции каррирования в Scheme с использованием макросов
Я изучаю макросистему в Scheme, и я подумал, что реализация функций с карри будет хорошим началом. Вот что я приготовил: (define-syntax function (syntax-rules () ((_ () body ...) (lambda () body ...)) ((_ (param) body ...) (lambda (param) body ...))…
17 апр '13 в 17:18
1
ответ
Написание макроса `define-let` с гигиеной
Я пытаюсь написать define-let макрос в ракетке, который "сохраняет" заголовок (let ((var value) ...) ...) а именно только (var value) ... часть, и позволяет повторно использовать это позже. Код ниже работает как ожидалось: #lang racket ;; define-let…
08 июн '15 в 14:02
1
ответ
Определение цикла For в схеме
Примечание. По-видимому, это версия схемы Gauche 0.9.3.3. Кажется, я не могу обернуться вокруг этих языков Lisp:/. Я пытаюсь определить синтаксис цикла for в схеме. Я не уверен, что это выполнимо с помощью рекурсивной функции (я думаю, что это так),…
28 дек '13 в 03:49
1
ответ
Как комментировать значения в #ifdef в одном месте
Давайте представим, что у нас есть проект C++, который должен работать на нескольких платформах (например, arm/arm64), и нам нужно иметь специфические для цели значения для каждой из них. Прямо сейчас мы делаем: #ifdef PLATFORM_ARM #define TIMEOUT_V…
07 ноя '18 в 06:18
1
ответ
Расширение макроса схемы: вложение let-синтаксиса в define-синтаксис
Я хочу расширить (foo x (f n) (f n) (arbitrary) (f n) ...) в (begin (x 'f n) (x 'f n) (arbitrary) (x 'f n) ...) моя попытка: (define-syntax foo (syntax-rules () ((_ l a ...) (let-syntax ((f (syntax-rules () ((_ n) (l (quote f) n))))) (begin a ...)))…
24 янв '12 в 13:46
1
ответ
Как передать переменную в макрос определения, используемый для доступа к пути в системном verilog
Я использую макрос определения, чтобы установить путь для модуля, то есть `define DUT_PATH(CH) dut_top.u_channel_```CH``_mode и используя этот макрос определения в модуле, где мы передаем номер канала, модуль channel_oper # (int channel_num = 0) (вх…
22 авг '18 в 05:04
0
ответов
Как заполнить определения в шейдере с помощью OpenSceneGraph (OSG)
У меня проблемы с определением в шейдере. Маленький кусочек шейдера: #pragma import_defines ( HAS_NORMALS ) #pragma import_defines ( HAS_TANGENTS ) #ifdef HAS_NORMALS #ifdef HAS_TANGENTS varying mat3 v_TBN; #else varying vec3 v_Normal; #endif #endif…
05 июн '18 в 12:22