; record-test.scm (module record-test () (import scheme) (import chicken.base) (import chicken.type) (import chicken.format) (import chicken.memory.representation) (import types) (define x (make-r 1 "alice")) (printf "r?: ~A\nr-def?: ~A\nr-def-lam?: ~A\ntag: ~A\n" (r? x) (r-def? x) (r-def-lam? x) (block-ref x 0)) ) ; types.scm (module types * (import scheme) (import chicken.base) (import chicken.type) (import typed-records) (define-record r (id : fixnum) (name : string)) (define r-def? r?) (define r-def-lam? (lambda (a) (r? a))) ) ; results in... alice@venus:~/code/chicken/record-test % pontiff build --verbose && pontiff run constructing build order... building "record-test"... /usr/bin/env chicken ../src/types.scm -output-file __types.c -specialize -strict-types -local -lfa2 -inline -inline-global -optimize-leaf-routines -emit-import-library types -unit __types -emit-types-file __types.types /usr/bin/env clang __types.c -o __types.o -c -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -O2 -fomit-frame-pointer -fPIC -DPIC -I/usr/include/chicken /usr/bin/env chicken ../src/record-test.scm -output-file __record-test.c -specialize -strict-types -local -lfa2 -inline -inline-global -optimize-leaf-routines -uses __types -consult-types-file __types.types /usr/bin/env clang __record-test.c -o __record-test.o -c -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -O2 -fomit-frame-pointer -fPIC -DPIC -I/usr/include/chicken /usr/bin/env clang __types.o __record-test.o -o record-test -fuse-ld=lld -L/usr/lib -L/usr/local/lib -Wl,-R/usr/lib -Wl,-R/usr/local/lib -lchicken -lm -ldl built "record-test" running "record-test"... r?: #t r-def?: #t r-def-lam?: #f tag: r ; whereas without -strict-types -specialize... alice@venus:~/code/chicken/record-test % pontiff build --verbose && pontiff run constructing build order... building "record-test"... /usr/bin/env chicken ../src/types.scm -output-file __types.c -local -lfa2 -inline -inline-global -optimize-leaf-routines -emit-import-library types -unit __types -emit-types-file __types.types /usr/bin/env clang __types.c -o __types.o -c -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -O2 -fomit-frame-pointer -fPIC -DPIC -I/usr/include/chicken /usr/bin/env chicken ../src/record-test.scm -output-file __record-test.c -local -lfa2 -inline -inline-global -optimize-leaf-routines -uses __types -consult-types-file __types.types /usr/bin/env clang __record-test.c -o __record-test.o -c -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -O2 -fomit-frame-pointer -fPIC -DPIC -I/usr/include/chicken /usr/bin/env clang __types.o __record-test.o -o record-test -fuse-ld=lld -L/usr/lib -L/usr/local/lib -Wl,-R/usr/lib -Wl,-R/usr/local/lib -lchicken -lm -ldl built "record-test" running "record-test"... r?: #t r-def?: #t r-def-lam?: #t tag: types#r