This seems like an unfortunate naming discrepancy. Robby
On Sat, Dec 11, 2010 at 7:52 PM, Vincent St-Amour <stamo...@ccs.neu.edu> wrote: > 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 > _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev