(import chicken scheme foreign foreigners) #> typedef enum { pain, suffering, fear } garmonbozia; void creepy_dream (garmonbozia *x) { printf("give me back my garmonbozia!\n"); *x = fear; } <# ;;; this compiles: (define-foreign-type garmonbozia "garmonbozia") ;;; this does not: ;; (define-foreign-enum-type (garmonbozia "garmonbozia") ;; (garmonbozia->int int->garmonbozia) ;; pain suffering fear) (define (creepy-dream) (let-location ((a int)) ((foreign-lambda void creepy_dream (c-pointer garmonbozia)) (location a)) a)) (print (creepy-dream))