[racket-dev] Oversight in type for path-string?

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Fri Mar 23 12:12:39 EDT 2012

That's true, which is why it has to have a more complex filter than
you'd expect.  But if a value isn't `path-string?', then it is
definitely not a `Path', and if it *is* `path-string?' then it's
either a `String' or a `Path'.  So we can express an approximation of
it's behavior in the type.

On Fri, Mar 23, 2012 at 12:09 PM, Eric Dobson <eric.n.dobson at gmail.com> wrote:
> Actually I don't think this is an over sight. The null string is a String.
> And Path-String is Path U String, but (path-string? (string #\null)) => #f.
>
> Sent from a mobile device.
>
> On Mar 21, 2012 5:14 PM, "John Clements" <clements at brinckerhoff.org> wrote:
>>
>>
>> On Mar 21, 2012, at 3:20 PM, Sam Tobin-Hochstadt wrote:
>>
>> > On Wed, Mar 21, 2012 at 5:36 PM, John Clements
>> > <clements at brinckerhoff.org> wrote:
>> >> It looks like 'path-string?' is not labeled as a discriminator type.
>> >>
>> >>> path-string?
>> >> - : (Any -> Boolean)
>> >> #<procedure:path-string?>
>> >>>
>> >>
>> >> Is this just an oversight?
>> >
>> > Yes, that's just an oversight, although it's slightly more complicated
>> > than you'd think (because `(path-string? (string #\null))' is #f).
>>
>> Well, I just made do with (define-predicate ps? Path-String?), so this
>> certainly isn't a major problem.
>>
>> John
>>
>>
>> _________________________
>>  Racket Developers list:
>>  http://lists.racket-lang.org/dev
>>
>



-- 
sam th
samth at ccs.neu.edu


Posted on the dev mailing list.