From 9bd339b34f09f5b582cb8b77a11841f5de9ab695 Mon Sep 17 00:00:00 2001 From: Stefan Israelsson Tampe Date: Tue, 28 Aug 2018 20:22:54 +0200 Subject: random works --- modules/oop/pf-objects.scm | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'modules/oop') diff --git a/modules/oop/pf-objects.scm b/modules/oop/pf-objects.scm index f5b6466..fd11182 100644 --- a/modules/oop/pf-objects.scm +++ b/modules/oop/pf-objects.scm @@ -171,6 +171,7 @@ explicitly tell it to not update etc. (hash-ref h key -fail)))) (define-method (find-in-class x key fail) fail) +(define-method (find-in-class-raw klass key fail) fail) (define-method (find-in-class-raw (klass ) key fail) (let ((r (vhash-assoc key (slot-ref klass 'h)))) @@ -519,6 +520,30 @@ explicitly tell it to not update etc. (apply it class x) (the-create-object class x)))))) +(define int-cls #f) +(define int? #f) +(define tuple-cls #f) +(define tuple? #f) +(define string-cls #f) +(define str? #f) +(define bytes-cls #f) +(define bytes? #f) +(define list-cls #f) +(define list? #f) +(define float-cls #f) +(define float? #f) + +(define (check-obj obj) + (cond + ((int? obj) int-cls) + ((tuple? obj) tuple-cls) + ((float? obj) float-cls) + ((str? obj) string-cls) + ((list? obj) list-cls) + ((bytes? obj) bytes-cls) + (else + object))) + (define type-call (lambda (class . l) (if (pytype? class) @@ -528,11 +553,11 @@ explicitly tell it to not update etc. (lambda () (aif it (find-in-class-raw obj '__class__ #f) it - type)) + (check-obj obj))) (lambda x (warn x) - type))) - + (check-obj obj)))) + ((meta name bases dict . keys) (type- meta name bases dict keys))) class l) -- cgit v1.2.3