diff options
Diffstat (limited to 'modules/language/python/number.scm')
-rw-r--r-- | modules/language/python/number.scm | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/modules/language/python/number.scm b/modules/language/python/number.scm index efab4e4..45a3cf4 100644 --- a/modules/language/python/number.scm +++ b/modules/language/python/number.scm @@ -38,7 +38,7 @@ (begin (mk-biop0 op) (define-method (op v (o <p>)) - (aif it (ref o 'r2) + (aif it (ref o 'r1) (it v) (next-method))))) @@ -211,26 +211,28 @@ (define-python-class int (<py-int>) (define __init__ - (case-lambda - ((self) - (__init__ self 0)) - - ((self n) - (let lp ((n n)) - (cond - ((and (number? n) (integer? n)) - (slot-set! self 'x n)) - ((number? n) - (lp (py-floor n))) - ((string? n) - (lp (string->number n))) - (else - (aif it (slot-ref n '__int__) - (slot-set! self 'x it) - (raise ValueError "could not make int from " n)))))) + (letrec ((__init__ + (case-lambda + ((self) + (__init__ self 0)) + + ((self n) + (let lp ((n n)) + (cond + ((and (number? n) (integer? n)) + (slot-set! self 'x n)) + ((number? n) + (lp (py-floor n))) + ((string? n) + (lp (string->number n))) + (else + (aif it (slot-ref n '__int__) + (slot-set! self 'x it) + (raise ValueError "could not make int from " n)))))) - ((self n k) - (__init__ self (string->number n k)))))) + ((self n k) + (__init__ self (string->number n k)))))) + __init__))) (define (proj? x) (if (number? x) |