Re: [julia-users] Official recommendation for: conversions?

2015-03-21 Thread Simon Byrne
My rough interpretation (which is by no means the official one, as I think 
this is still up for debate), is as follows:, 

1) convert(T,x) is the most specific: it will convert x to type T, throwing 
an error if outside the range (though it can round, for instance when 
converting to a Rational or FloatingPoint type). This can be called 
implicitly, e.g. when assigning to a typed array.
2) T(x) does mostly the same thing, but is slightly more general
 * when T : FloatingPoint, you can pass extra rounding arguments, e.g. 
Float64(x,RoundDown)
 * in some cases, x can be a string: at the moment this seems to only work 
for BigFloat and BigInt, but perhaps this should apply to other types.
3) x % T is defined only for integer types: the idea is to be a module 
conversion, and can be faster because no exceptions can be thrown.

Additionally, if x is a FloatingPoint type, then there are also the extra 
methods round(T, x), trunc(T, x), floor(T, x), ceil(T, x) and the 
non-exported Base.unsafe_trunc(T, x).

s

On Saturday, 21 March 2015 00:22:43 UTC+1, Milan Bouchet-Valat wrote:

 Le vendredi 20 mars 2015 à 14:03 -0700, Julia User a écrit : 
  I looked through some of the Base source code and see different things 
  for conversions. 
  
  c%UInt8 
  convert(UInt8,x) 
  UInt8(t) 
  
  to name a few 
  
  Any official recommendation for someone starting out new - anything 
  which is planned to be depreciate soon. 
 I think all of them are OK, but the last one does not have the same 
 behavior: 

 julia UInt8(256) 
 ERROR: InexactError() 
  in call at base.jl:36 

 julia convert(UInt8, 256) 
 ERROR: InexactError() 
  in convert at int.jl:160 

 julia 256 % UInt8 
 0x00 

 The first one ends up calling the second one, so I'd say use it since 
 it's shorter. The last one does not check for overflow, so use it only 
 if you really want this behavior. 

 In short: in doubt, use the first one. 


 Regards 



Re: [julia-users] Official recommendation for: conversions?

2015-03-21 Thread Simon Byrne
On Saturday, 21 March 2015 09:38:23 UTC+1, Simon Byrne wrote:

  * in some cases, x can be a string: at the moment this seems to only work 
 for BigFloat and BigInt, but perhaps this should apply to other types.


See https://github.com/JuliaLang/julia/issues/10594 in case anyone has an 
opinion.

s


Re: [julia-users] Official recommendation for: conversions?

2015-03-20 Thread Milan Bouchet-Valat
Le vendredi 20 mars 2015 à 14:03 -0700, Julia User a écrit :
 I looked through some of the Base source code and see different things
 for conversions.
 
 c%UInt8
 convert(UInt8,x)
 UInt8(t)
 
 to name a few
 
 Any official recommendation for someone starting out new - anything
 which is planned to be depreciate soon.
I think all of them are OK, but the last one does not have the same
behavior:

julia UInt8(256)
ERROR: InexactError()
 in call at base.jl:36

julia convert(UInt8, 256)
ERROR: InexactError()
 in convert at int.jl:160

julia 256 % UInt8
0x00

The first one ends up calling the second one, so I'd say use it since
it's shorter. The last one does not check for overflow, so use it only
if you really want this behavior.

In short: in doubt, use the first one.


Regards


[julia-users] Official recommendation for: conversions?

2015-03-20 Thread Julia User
I looked through some of the Base source code and see different things for 
conversions.

c%UInt8 https://github.com/JuliaLang/julia/blob/master/base/utf8.jl#L125
convert(UInt8,x) 
https://github.com/JuliaLang/julia/blob/master/base/int.jl#L224
UInt8(t) 
https://github.com/JuliaLang/julia/blob/master/base/serialize.jl#L60

to name a few

Any official recommendation for someone starting out new - anything which 
is planned to be depreciate soon.

Thanks