On Sat, Dec 11, 2010 at 10:53 PM, Robby Findler <ro...@eecs.northwestern.edu> wrote: > >> Changing Racket is tricky, but I think using the `Integer' type for >> something useless (it's not even currently represented in the TR type >> system) would be a mistake. > > Well, the change to TR would be to change "Integer" to "ExactInteger" > (or similar) presumably, not to add a useless type.
I think not having an `Integer' type would be just as bad. Given that (integer? 3.0) => #t, I think there will be an inevitable discrepancy between what people expect and what the type system does. One of these definitions has to not type check: (: x : Integer) (define x 1) (: f : Integer -> Integer) (define (f x) (add1 x)) (: g : Any -> Integer) (define (g x) (assert x integer?)) You're suggesting the first one fail, because `Integer' would go away. Right now only `g' fails. Adding an `Integer' type that corresponds to `integer?' would make `f' fail. My feeling is that the fewest people will run into `g', and that it's therefore the right choice, since there will be a FAQ about this regardless. -- sam th sa...@ccs.neu.edu _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev