diff options
author | Andy Wingo <wingo@pobox.com> | 2009-02-22 11:06:13 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-02-22 11:06:13 +0100 |
commit | af6c20b731c66397ab3886e162d6b6252d810cbb (patch) | |
tree | 3c39c5c35910f76e37f83af0cb05ef82d8211982 /module/language/ecmascript/impl.scm | |
parent | 8c306808c25fb1f353dca2b1d6a1356193e72dea (diff) | |
download | guile-af6c20b731c66397ab3886e162d6b6252d810cbb.tar.gz |
more arithmetic on non-numbers
* module/language/ecmascript/compile-ghil.scm (comp): Convert to number
on unary +.
* module/language/ecmascript/impl.scm: Define -, *, /, <, <=, >=, >
operations on non-numbers.
Diffstat (limited to 'module/language/ecmascript/impl.scm')
-rw-r--r-- | module/language/ecmascript/impl.scm | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/module/language/ecmascript/impl.scm b/module/language/ecmascript/impl.scm index 737639fd4..c31c29d73 100644 --- a/module/language/ecmascript/impl.scm +++ b/module/language/ecmascript/impl.scm @@ -26,7 +26,7 @@ #:use-module (language ecmascript array) #:re-export (*undefined* *this* call/this* pget pput pdel has-property? - ->boolean + ->boolean ->number new-object new new-array) #:export (js-init get-this typeof @@ -110,3 +110,32 @@ (define-method (+ a b) (+ (->number a) (->number b))) + +(define-method (- a b) + (- (->number a) (->number b))) + +(define-method (* a b) + (* (->number a) (->number b))) + +(define-method (/ a b) + (/ (->number a) (->number b))) + +(define-method (< a b) + (< (->number a) (->number b))) +(define-method (< (a <string>) (b <string>)) + (string< a b)) + +(define-method (<= a b) + (<= (->number a) (->number b))) +(define-method (<= (a <string>) (b <string>)) + (string<= a b)) + +(define-method (>= a b) + (>= (->number a) (->number b))) +(define-method (>= (a <string>) (b <string>)) + (string>= a b)) + +(define-method (> a b) + (> (->number a) (->number b))) +(define-method (> (a <string>) (b <string>)) + (string> a b)) |