(define-module (language python bool) #:use-module (oop goops) #:use-module (language python exceptions) #:use-module (oop pf-objects) #:export (bool)) (define-syntax-rule (aif it p x y) (let ((it p)) (if it x y))) (define-method (bool x) (cond ((null? x) #f) ((eq? x None) #f) (else x))) (define-method (bool (x )) (if (= x 0) #f x)) (define-method (bool (x

)) (aif it (ref x '__bool__) (it) (next-method))) (define-method (+ (a ) b) (+ (if a 1 0) b)) (define-method (+ b (a )) (+ (if a 1 0) b)) (define-method (* (a ) b) (* (if a 1 0) b)) (define-method (* b (a )) (* (if a 1 0) b)) (define-method (- (a ) b) (- (if a 1 0) b)) (define-method (- b (a )) (- b (if a 1 0)))