diff options
Diffstat (limited to 'modules/language/python/try.scm')
-rw-r--r-- | modules/language/python/try.scm | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/modules/language/python/try.scm b/modules/language/python/try.scm index 9778f3b..a36263b 100644 --- a/modules/language/python/try.scm +++ b/modules/language/python/try.scm @@ -11,17 +11,21 @@ (define-syntax-rule (aif it p x y) (let ((it p)) (if it x y))) (define-inlinable (standard-check class obj l) - (if (struct? obj) - (if (is-a? obj <p>) - (if (is-a? class <p>) - (is-a? obj (ref class '__goops__)) - (is-a? obj class)) - (if (is-a? obj <object>) - (is-a? obj class) - (eq? obj class))) - (if (and (procedure? class) (not (pyclass? class))) - (apply class obj l) - (eq? class obj)))) + (cond + ((eq? class #t) + #t) + ((struct? obj) + (if (is-a? obj <p>) + (if (is-a? class <p>) + (is-a? obj (ref class '__goops__)) + (is-a? obj class)) + (if (is-a? obj <object>) + (is-a? obj class) + (eq? obj class)))) + ((and (procedure? class) (not (pyclass? class))) + (apply class obj l)) + (else + (eq? class obj)))) (define (check class obj l) |