(module asdf (test) (import scheme) (cond-expand (chicken-4 (import chicken) (import (only extras sprintf)) (require-library matchable)) (else (import chicken.base) (import chicken.format) (import (only chicken.memory.representation record-instance-slot record-instance?)))) (import matchable) (define-record foorec a b) (define-record barrec foo c) (define (test r) (match r [($ barrec foo c) (match foo [($ foorec a b) (print (sprintf "chicken-4 matched ~s ~s ~s" a b c))])] [($ asdf#barrec foo c) (match foo [($ asdf#foorec a b) (print (sprintf "chicken-5 matched ~s ~s ~s" a b c))])] [other (print "Other match " r)])) (test (make-barrec (make-foorec "cat" "dog") "parrot")))