There is no evaluator in clojure (other than the one in the JVM) and
certainly no retries.
Clojure is a compiled language. All regular function are called via the IFn
interface, which takes objects. Function arguments and return values can be
type hinted to be primitive.
Normally such primitives ar
The reader always returns objects, it's the compiler that sometimes
decides to unbox literal numbers.
As for type, it's just a regular Clojure function which takes a single
object argument (so the 23 will be passed to it in a Long box). Here
it happens to delegate to class and ultimately (.getClas
So, something like: (type 23) the reader makes a list of a symbol and a
primitive, the evaluator evals to get a generic function and a primitive,
then tries to apply the generic function to the primitive, can't find a
primitive version, so boxes the primitive to an object and tries again, and
t
Both are true.
The type function doesn't have a primitive version, so its argument gets
auto-boxed.
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are
Great, thanks!
So if one is an object and one is a primitive is one of these not true?
user=> (type seed1)
java.lang.Long
user=> (type 25214903917)
java.lang.Long
Cheers, John.
On Wednesday, February 20, 2013 11:44:44 PM UTC, Herwig Hochleitner wrote:
>
> I agree that unchecked-multiply
I agree that unchecked-multiply should do an unchecked multiply, even when
faced with objects. Going to bring that up on clojure-dev.
A workaround: (unchecked-multiply (long seed1) 0x5DEECE66D)
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To p
looks like if you make any(or both) to double it works as expected due to
these being called:
static public double multiply(double x, double y){
return x * y;
}
static public double multiply(double x, long y){
return x * y;
}
static public double multiply(long x, double y){
return x
looks like different methods are called:
for: user=> (unchecked-multiply 25214903917 0x5DEECE66D)
this method: static public long unchecked_multiply(long x, long y){return x
* y;}
for: (unchecked-multiply seed1 0x5DEECE66D)
this method: static public Number unchecked_multiply(long x, Object
y){r
Hi, I'm getting an unexpected exception trying to do unchecked
arithmetic:
user=> (def seed1 25214903917)
#'user/seed1
user=> (type seed1)
java.lang.Long
user=> (type 25214903917)
java.lang.Long
user=> (unchecked-multiply seed1 0x5DEECE66D)
ArithmeticException integer overflow
clojure.lang.Numbers