История изменений
Исправление monk, (текущая версия) :
x в свою очередь тоже раскрывается в какой-то ~a и так далее.
(define-syntax-rule (foo y) (+ y 1))
(define-syntax-rule (ret x) (return (foo x)))
нормально из одного макроса вызовет другой
в 0-фазе (генерация си-кода) тоже доступен весь racket и можно искаробки делать хуки к компилеру
Так и так можно
(defmacro (create-hash name type)
`(code ,(format "std::map<~a> ~a;" type name)))
(defmacro (orm-class name db) ; псевдокод
(define handle (open-db db))
`(code
,(format "class ~a {public: ~a};"
(string-join
(for/list ([field (fields db)])
(field-description field)) ";\n"))))
Исправление monk, :
x в свою очередь тоже раскрывается в какой-то ~a и так далее.
(define-syntax-rule (foo y) (+ y 1))
(define-syntax-rule (ret x) (return (foo x)))
нормально из одного макросы вызовет другой
в 0-фазе (генерация си-кода) тоже доступен весь racket и можно искаробки делать хуки к компилеру
Так и так можно
(defmacro (create-hash name type)
`(code ,(format "std::map<~a> ~a;" type name)))
(defmacro (orm-class name db) ; псевдокод
(define handle (open-db db))
`(code
,(format "class ~a {public: ~a};"
(string-join
(for/list ([field (fields db)])
(field-description field)) ";\n"))))
Исходная версия monk, :
x в свою очередь тоже раскрывается в какой-то ~a и так далее.
(define-syntax-rule (foo y) (+ y 1))
(define-syntax-rule (ret x) (return (foo x)))
нормально из одного макросы вызовет другой
> в 0-фазе (генерация си-кода) тоже доступен весь racket и можно искаробки делать хуки к компилеру
Так и так можно
(defmacro (create-hash name type)
`(code ,(format "std::map<~a> ~a;" type name)))
(defmacro (orm-class name db) ; псевдокод
(define handle (open-db db))
`(code
,(format "class ~a {public: ~a};"
(string-join
(for/list ([field (fields db)])
(field-description field)) ";\n"))))