define-struct

28 Feb 2012

$ diff -u define-struct.rkt.orig define-struct.rkt
--- define-struct.rkt.orig	2012-02-29 00:09:45.093002047 +0900
+++ define-struct.rkt	2012-03-07 10:20:54.236380622 +0900
@@ -432,7 +432,7 @@
                                           (car (generate-temporaries (list id))))
                                       ctor-name)
                                   (build-name id "make-" id))]
-                       [? (build-name id id "?")]
+                       [? (build-name id "is-a-kind-of-" id "?")]
                        [sels (map (lambda (f)
                                     (build-name id ; (field-id f) 
                                                 id "-" (field-id f)))

${RACKET_HOME}/collects/racket/private/define-struct.rkt 파일을 위 처럼 바꾸면 아래와 같은짓을 할 수 있습니다.

$ racket
Welcome to Racket v5.2.1.
- (define-struct rat ())
- (define mb (make-rat))
- (is-a-kind-of-rat? mb)
#t
- (is-a-kind-of-rat? 'mb)
#f
- (rat? mb)
reference to undefined identifier: rat?

 === context ===
/usr/local/racket/collects/racket/private/misc.rkt:87:7
Based on Bootstrap. Icons from Font Awesome. Web fonts from Google. Generated by Jekyll.