Hacker News new | ask | show | jobs
by ninesigns 2678 days ago
I wish Julia would be more strict wrt type coercion of integer to float values.

I've once spent a day debugging the issue caused by the following line of code, where t1, t2 are floats and v is an array:

d = (t2 - t1) * length(v)

It should've been LinearAlgebra.norm():Float instead of length():Int. Had julia been stricter the code would have failed to run, saving me much time.

1 comments

I actually can't think of a single language that doesn't allow you to multiply an integer and a floating point value, yielding a floating point result.
Rust.

In Rust, all type coercion must be explicit, you can't even add different integer types:

5i64 + 5i32 // WONT compile

5i64 + 5i32 as i64 // will work

OCaml has distinct multiplication operators for ints and floats. Haskell's multiplication operator requires its arguments to be of the same numeric type, and returns a product of the same type. That's two, off the top of my head...
JavaScript? 23n + 5 causes a TypeError.
Go ?
Ada?