At Sat, 11 Dec 2010 18:35:17 -0700, Petey Aldous wrote: > I've discovered what may be a bug in the type system of Typed Racket. The > functions that round - (round), (truncate), (ceiling), etc. are typed as > Real, not Integer; however, the result of (integer? (round (* 10e15 > (random)))) is consistently true - and the same holds for the other rounding > functions.
Typed Racket's Integer type corresponds to racket's exact integers (exact-integer?, not integer?). integer? can return true for floating point numbers: (integer? 1.0) -> #t but exact-integer? cannot. The types for round, truncate, etc. take this into account. For instance, if you round an exact rational, the type of the result will be Integer, whereas if you round a floating point number, you get a Float back. > Is this intentional? If so, why? If it is (or even if it isn't), how can I > transform the result of (random) to an Integer? You can use inexact->exact on the result of round. Vincent _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev

