История изменений
Исправление monk, (текущая версия) :
Как?
(define-for-syntax types (make-hash))
(define-syntax-rule (ctype type var)
(begin-for-syntax
(hash-set! types 'var 'type))
@c{@type @var;})
(define-syntax-rule (macro-print-type var)
@c{printf("%s\n", "@(begin-for-syntax (hash-ref types 'var))")})
Для литералов действительно понадобится немножко магии — проверка того, что var — не символ и ручной (через case) выбор правильного типа С.
Исправление monk, :
Как?
(define-for-syntax types (make-hash))
(define-syntax-rule (ctype type var)
(begin-for-syntax
(hash-set! types 'var 'type))
@c{@type @var;})
(define-syntax-rule (macro-print-type var)
@c{printf("%s\n", "@(hash-ref types 'var)")})
Для литералов действительно понадобится немножко магии — проверка того, что var — не символ и ручной (через case) выбор правильного типа С.
Исходная версия monk, :
Как?
(define-for-syntax types (make-hash))
(define-syntax-rule (ctype type var)
(begin-for-syntax
(hash-set! types var type))
@c{@type @var;})
(define-syntax-rule (macro-print-type var)
@c{printf("%s\n", "@(hash-ref types var)")})