Changeset 37866 in project for release/5/coops-utils/trunk/coops-introspection.scm
- Timestamp:
- 09/01/19 10:23:31 (17 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
release/5/coops-utils/trunk/coops-introspection.scm
r37388 r37866 55 55 ;;; Helpers 56 56 57 (define +class-primitive+ #t) 58 57 59 (: union-class-property-values (procedure (list-of coops-class) --> list)) 58 60 ; … … 93 95 (union-class-supers (*class-supers class)) ) 94 96 95 (: strict-subclass?(coops-class coops-class --> boolean))97 (: class< (coops-class coops-class --> boolean)) 96 98 ; 97 99 ;c1 < c2 98 (define ( strict-subclass?c1 c2)100 (define (class< c1 c2) 99 101 (subclass? c1 c2) ) 100 102 101 (: loose-subclass? (coops-class coops-class --> boolean)) 102 ; 103 ;c1 <= c2 104 (define (loose-subclass? c1 c2) 103 (: class<= (coops-class coops-class --> boolean)) 104 ; 105 (define (class<= c1 c2) 105 106 (or 106 107 (eq? c1 c2) 107 ( strict-subclass?c1 c2)) )108 (class< c1 c2)) ) 108 109 109 110 (: *method-specializers (pair --> *)) … … 133 134 (vector-ref (check-generic-form loc obj idx vector-boxed-list?) 0) ) 134 135 135 (: top-instance-of? (* coops-class --> *))136 (: top-instance-of? (* coops-class --> boolean)) 136 137 ; 137 138 (define (top-instance-of? x class) 138 139 (let ((class-x (class-of x))) 139 140 (or 140 (eq? #t class-x) ;primitive141 ( loose-subclass?class class-x) ) ) )141 (eq? +class-primitive+ class-x) 142 (class<= class class-x) ) ) ) 142 143 143 144 ;; call-by-ref 144 145 145 (: generic-name? (* --> *))146 (: generic-name? (* --> boolean)) 146 147 ; 147 148 (define (generic-name? obj) … … 150 151 (symbol? obj)) ) 151 152 152 (: vector-boxed-list? (* --> *))153 (: vector-boxed-list? (* --> boolean)) 153 154 ; 154 155 (define (vector-boxed-list? obj) … … 163 164 ; 164 165 (define (instance-of? x class) 165 ( loose-subclass?(class-of x) class) )166 (class<= (class-of x) class) ) 166 167 167 168 (: class? (* -> boolean : coops-class))
Note: See TracChangeset
for help on using the changeset viewer.