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? Everything you wrote there is correct, except that `U' should be `case-lambda'. You can't use that type in `require/typed', though, since the contract library doesn't accept `case->' contracts like that. -- sam th sa...@ccs.neu.edu _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev