Как я могу получить доступ к типам членов структуры на typed/racket
языке? Функция extract-struct-info
выдает список методов доступа к полям, но не их типы.
(require (for-syntax racket/struct-info syntax/parse)) (define-syntax (display-struct-info stx) (syntax-parse stx [(display-struct-info name:id) (display (extract-struct-info (syntax-local-value #'name))) #'(list)])) (struct: s ([a : Number] [b : String])) (display-struct-info s)
Выходы:
(.#<syntax:12:9 struct:s> .#<syntax make-s> .#<syntax:12:9 s?> (.#<syntax:12:9 s-b> .#<syntax:12:9 s-a>) (#f #f) #t)'()
В более общем плане, как я могу получить доступ к типизированным типам / типам рэкетов, например, получить список типов в тип объединения (U Number String 'foo 'bar)
или просмотр аргументов полиморфный тип?
Меня интересует только доступ во время расширения макроса, не доступ во время выполнения.
Связано: Получить информацию о типе в макросах (тот же вопрос для Common Lisp)