summaryrefslogtreecommitdiff
path: root/modules/language/python/number.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/number.scm')
-rw-r--r--modules/language/python/number.scm42
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)