(define-record foo a) (define-type foo-t (struct foo)) (define (t1) (the foo-t (the foo-t (make-foo)))) ; OK (define (t2) (the (struct foo) (the (struct foo) (make-foo)))) (: bar (procedure () (struct foo))) (define (bar) (make-foo)) (define (t3) (the (struct foo) (bar))) ;; $ csc -verbose -specialize foo.scm ;; Note: in toplevel procedure `t2': ;; expression returns a result of type `(struct foo)', but is declared to return `(struct foo)', which is not a subtype ;; Note: in toplevel procedure `t3': ;; expression returns a result of type `(struct foo)', but is declared to return `(struct foo)', which is not a subtype