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 <[email protected]> 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" <[email protected]> wrote: >> >> >> On Mar 21, 2012, at 3:20 PM, Sam Tobin-Hochstadt wrote: >> >> > On Wed, Mar 21, 2012 at 5:36 PM, John Clements >> > <[email protected]> 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 [email protected] _________________________ Racket Developers list: http://lists.racket-lang.org/dev

