On Saturday, October 3, 2015 at 4:49:52 PM UTC+2, Alex Knauth wrote: > On Oct 3, 2015, at 8:42 AM, Paolo Giarrusso <[email protected]> wrote: > > Hi all! > It seems to me that positive? is handled somehow specially by occurrence > typing, and that this is not documented but should be. > > It appears to have a filter in practice, even the Typed Racket guide [1] > claims so in passing, but this filter is not visible in its type annotation, > compared e.g. to string?: > > string? > - : (-> Any Boolean : String) ; <--- Note the filter annotation `: String` > #<procedure:string?> > positive? > - : (-> Real Boolean) ; <--- No filter annotation! > #<procedure:positive?> > > Therefore, I'm a bit confused by Sec. 5.3. I'm guessing that `positive?` has > a more complicated filter (it refines Real to Positive-Real, and Integer to > Positive-Integer), and that Sec. 5.2 is in fact oversimplified, but I failed > to find mention of filter or `positive?` in the Typed Racket reference [2]. > > > > It does have a filter, and it's slightly more complicated, but not too > complicated: > https://github.com/racket/typed-racket/blob/aae17a0bc03de7c7aa2cfb3555838e456ad77e52/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt#L734 > It's the equivalent of (-> Real Boolean : #:+ Positive-Real #:- > Nonpositive-Real).
Thanks for the prompt answer, that's cooler than I thought — Racket figures out by itself that a positive? Integer is a Positive-Integer! However, the hiding seems a bug to me (https://github.com/racket/typed-racket/issues/208). The following outputs 20 lines, showing 21 wouldn't really hurt: > (:type #:verbose (-> Real Boolean : #:+ Positive-Real #:- Nonpositive-Real)) I now also found docs for #:+ (under ->); the guide could have a forward pointer to it. Cheers, Paolo > This hiding is not specific to positive?, because: > (:type (-> Real Boolean : #:+ Positive-Real #:- Nonpositive-Real)) > prints out > > (-> Real Boolean) > [can expand further: Boolean Real] > > [1] http://docs.racket-lang.org/ts-guide/occurrence-typing.html > [2] http://docs.racket-lang.org/search/index.html?q=T:ts-reference%20filter > Also queried without results: > T:ts-guide positive? > T:ts-reference positive? > > Instead, searching `T:ts-guide filter` leads me to the incomplete discussion > above. > > Cheers, > Paolo -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

