Dear mailing list, I have a beginners question. Using `foreigners` one can easily define structs and enums. But how does one figure out whether a symbol is an enum or a struct?
Here is a small example of what I am trying to do: ``` (import (chicken base) (chicken foreign) foreigners) ;; define "enum event" and "struct plan" #> #define EV_X 111 #define EV_Y 222 <# (define-foreign-enum-type (event unsigned-integer32) (event->int int->event) ((evx event/x) EV_X) ((evy event/y) EV_Y)) (define-foreign-record-type plan (integer nxt plan-nxt) (c-string msg plan-msg)) ;; assume this function comes from a library, it doesn't know about event ;; or plan: (define (print-type-info type) (cond ((??) (printf "~a is enum~n" type)) ((??) (printf "~a is struct~n" type)) (else (printf "~a is something else~n" type)))) ;; And I'd hope to use it like this (print-type-info 'plan) (print-type-info 'event) ;; Or like this if print-type-info would need to be defined with syntax-rules. (print-type-info plan) (print-type-info event) ``` Any suggestions? Thanks in advance. Best, -Diogo