Hi,I am currently learning Clojure/ClojureScript and enjoying it a lot. Since I have a bit of code I am planning to port that requires precise rational arithmetic, I am particular delighted by the fact that Clojure natively supports rational and arbitrary precision numbers. I'd also like to be able to run parts of that code in the browser, though, which currently seems to mean that I would have to define my own interface and implement it in a platform-dependent way.So I'd like to know if there are currently any plans for adding Ratio, BigInt and BigDecimal support to ClojureScript, or at least make it easier for users to plug in their own code. I only had a brief glance at the sources, but it seems to me that by providing my own implementations of the 'emit-constant' multi-method for these types, I could make literals work. The standard arithmetic operators, on the other hand, seem to be implemented as macros that directly produce Javascript code. Any chance to have an interface IArithmetic or such in the near future?Obviously, if no one's working on this or planning to, I'm happy to contribute my own feeble attempts if anyone thinks they might be useful. I'll just have to understand ClojureScript's implementation better first.Cheers,Olaf
Just to get your gut feeling, do you think the implementation would involve bittwittling with the native number, using strings or using byte arrays?
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
I have extensive google closure experience, but little low level clojurescript experience.Could we use the clojure library's Integer or long type. It will likely not be as fast but when you need it you need it.http://closure-library.googlecode.com/svn/docs/closure_goog_math_integer.js.htmlhttp://closure-library.googlecode.com/svn/docs/closure_goog_math_long.js.html
If you can tell me if I would be wasting my time or not I will start working on a comprehensive design.
"Coerce to BigInt"[x] (cond(= (type x) goog.math.Integer) x(number? x) (Integer/fromInt x)(string? x) (Integer/fromString x);string may be a bad idea but it at least keeps javascript numbers from loosing information))
Then we could make an arbitrary precision version of all the number related functions(defn +'"Returns the sum of nums. (+) returns 0."([] 0)([x] (bigint x))([x y] (.add (bigint x) (bigint y)))([x y & more] (reduce +' (.add (bigint x) (bigint y)) more)))I am not that familiar with clojurescript yet,but could probably do an extend type on goog.math.Integerto support iequiv with js/numbers?
David--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en