[racket-dev] typed/scheme n00b question
On Tue, Sep 7, 2010 at 5:54 AM, Sam Tobin-Hochstadt <samth at ccs.neu.edu> wrote:
> On Mon, Sep 6, 2010 at 10:28 PM, Eli Barzilay <eli at barzilay.org> wrote:
>> On Sep 6, Sam Tobin-Hochstadt wrote:
>>> On Sun, Sep 5, 2010 at 5:30 PM, Eli Barzilay <eli at 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'.
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.
Jay
>
> You can't use that type in `require/typed', though, since the contract
> library doesn't accept `case->' contracts like that.
> --
> sam th
> samth at ccs.neu.edu
> _________________________________________________
> For list-related administrative tasks:
> http://lists.racket-lang.org/listinfo/dev
>
--
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay
"The glory of God is Intelligence" - D&C 93