On Sep 7, Jay McCarthy wrote: > On Tue, Sep 7, 2010 at 5:54 AM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu> wrote: > > On Mon, Sep 6, 2010 at 10:28 PM, Eli Barzilay <e...@barzilay.org> wrote: > >> On Sep 6, Sam Tobin-Hochstadt wrote: > >>> On Sun, Sep 5, 2010 at 5:30 PM, Eli Barzilay <e...@barzilay.org> wrote: > >>> > > >>> > I think that this is the type for `file-or-directory-modify-seconds': > >>> > > >>> > (case-lambda > >>> > [String -> Exact-Nonnegative-Integer] > >>> > [String (Option Exact-Nonnegative-Integer) > >>> > -> (U Exact-Nonnegative-Integer Void)] > >>> > [String (Option Exact-Nonnegative-Integer) (-> Any) > >>> > -> Any]) > >>> > >>> Probably you want something more specific that handles the [String > >>> Integer] and [String False] cases separately. > >> > >> Yeah, but that's the part that I can never remember. This: > >> > >> (U (String -> Exact-Nonnegative-Integer) > >> (String False -> Exact-Nonnegative-Integer) > >> (String Exact-Nonnegative-Integer -> Void) > >> (String (Option Exact-Nonnegative-Integer) (-> Any) -> Any)) > >> > >> is more precise, but IIRC, it's not equivalent to the above -- ? > > > > Why does everyone always want to use union for this?
I vaguely remembered that unions don't work for functions, and therefore didn't use one (also that "?" is exactly about it.) > > Everything you wrote there is correct, except that `U' should be > > `case-lambda'. > > There is something to be said for making the things that everyone > writes first be the thing they should write. It is natural to me to > think of a function with multiple arrow types as a union of some > arrow types. Would it be so hard for Typed Racket to see a union of > all arrows and just consider that the same as case-lambda? Is that > wrong? If it is fundamentally wrong, some better form of > explanation in the docs seem warranted. +1 to all of that. ["Why does everyone" reminds me of a teacher who had about 112 students out of a class of 120 students fail a course -- and concluded that it was a very weak class.] -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev