Re: [racket-dev] [plt] Push #28930: master branch updated

2014-06-30 Thread Stephen Chang
>> --- 
>> OLD/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/static-contracts/combinators/derived.rkt
>> +++ 
>> NEW/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/static-contracts/combinators/derived.rkt
>> @@ -6,7 +6,7 @@
>>
>>  (require "simple.rkt" "structural.rkt"
>>   (for-template racket/base racket/list racket/set racket/promise 
>> racket/mpair
>> -   racket/class))
>> +   racket/class racket/async-channel))
>>  (provide (all-defined-out))
>>
>>  (define identifier?/sc (flat/sc #'identifier?))
>> @@ -28,6 +28,7 @@
>>  (define empty-hash/sc (and/sc hash?/sc (flat/sc #'(λ (h) (zero? (hash-count 
>> h))
>>
>>  (define channel?/sc (flat/sc #'channel?))
>> +(define async-channel?/sc (flat/sc #'channel?))
>
> Should this be #'async-channel?

Yes, you are right. I'll fix it. Thanks.












>
>
>>  (define thread-cell?/sc (flat/sc #'thread-cell?))
>>  (define prompt-tag?/sc (flat/sc #'continuation-prompt-tag?))
>>  (define continuation-mark-key?/sc (flat/sc #'continuation-mark-key?))
>>
>> pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/abbrev.rkt
>> ~
>> --- OLD/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/abbrev.rkt
>> +++ NEW/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/abbrev.rkt
>> @@ -54,6 +54,7 @@
>>  (define -Param make-Param)
>>  (define -box make-Box)
>>  (define -channel make-Channel)
>> +(define -async-channel make-Async-Channel)
>>  (define -thread-cell make-ThreadCell)
>>  (define -Promise make-Promise)
>>  (define -set make-Set)
>> @@ -169,6 +170,7 @@
>>  (define -HT make-Hashtable)
>>  (define/decl -BoxTop (make-BoxTop))
>>  (define/decl -ChannelTop (make-ChannelTop))
>> +(define/decl -Async-ChannelTop (make-Async-ChannelTop))
>>  (define/decl -HashTop (make-HashtableTop))
>>  (define/decl -VectorTop (make-VectorTop))
>>  (define/decl -MPairTop (make-MPairTop))
>>
>> pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/printer.rkt
>> ~~
>> --- 
>> OLD/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/printer.rkt
>> +++ 
>> NEW/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/printer.rkt
>> @@ -424,6 +424,7 @@
>>  [(StructTop: (Struct: nm _ _ _ _ _)) `(Struct ,(syntax-e nm))]
>>  [(BoxTop:) 'BoxTop]
>>  [(ChannelTop:) 'ChannelTop]
>> +[(Async-ChannelTop:) 'Async-ChannelTop]
>>  [(ThreadCellTop:) 'ThreadCellTop]
>>  [(VectorTop:) 'VectorTop]
>>  [(HashtableTop:) 'HashTableTop]
>> @@ -462,6 +463,7 @@
>>  [(Box: e) `(Boxof ,(t->s e))]
>>  [(Future: e) `(Futureof ,(t->s e))]
>>  [(Channel: e) `(Channelof ,(t->s e))]
>> +[(Async-Channel: e) `(Async-Channelof ,(t->s e))]
>>  [(ThreadCell: e) `(ThreadCellof ,(t->s e))]
>>  [(Promise: e) `(Promise ,(t->s e))]
>>  [(Ephemeron: e) `(Ephemeronof ,(t->s e))]
>>
>> pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/structural.rkt
>> ~
>> --- 
>> OLD/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/structural.rkt
>> +++ 
>> NEW/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/structural.rkt
>> @@ -32,6 +32,7 @@
>>  (define-for-syntax structural-reps
>>#'([BoxTop ()]
>>   [ChannelTop ()]
>> + [Async-ChannelTop ()]
>>   [ClassTop ()]
>>   [Continuation-Mark-KeyTop ()]
>>   [Error ()]
>> @@ -62,6 +63,7 @@
>>   [Continuation-Mark-Keyof (#:inv)]
>>   [Box (#:inv)]
>>   [Channel (#:inv)]
>> + [Async-Channel (#:inv)]
>>   [ThreadCell (#:inv)]
>>   [Vector (#:inv)]
>>   [Hashtable (#:inv #:inv)]
>>
>> pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/subtype.rkt
>> ~~
>> --- 
>> OLD/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/subtype.rkt
>> +++ 
>> NEW/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/subtype.rkt
>> @@ -510,6 +510,7 @@
>>;; compared against t* here
>>(subtype* A0 s t*)]
>>   [((Channel: t) (Evt: t*)) (subtype* A0 t t*)]
>> + [((Async-Channel: t) (Evt: t*)) (subtype* A0 t t*)]
>>   ;; Invariant types
>>   [((Box: s) (Box: t)) (type-equiv? A0 s t)]
>>   [((Box: _) (BoxTop:)) A0]
>> @@ -517,6 +518,8 @@
>>   [((ThreadCell: _) (ThreadCellTop:)) A0]
>>   [((Channel: s) (Channel: t)) (type-equiv? A0 s t)]
>>   [((Channel: _) (ChannelTop:)) A0]
>> + [((Async-Channel: s) (Async-Channel: t)) (type-equiv? A0 s t)]
>> + [((Async-Channel: _) (Async-ChannelTop:)) A0]
>>   [((Vector: s) (Vector: t)) (type-equiv? A0 s t)]
>>   [((Vector: _) (VectorTop:)) A0]
>>   [((HeterogeneousVector: _) (VectorTop:)) A0]
>>
>> pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/a

Re: [racket-dev] [plt] Push #28930: master branch updated

2014-06-24 Thread Eric Dobson
On Tue, Jun 24, 2014 at 3:17 PM,   wrote:
> stchang has updated `master' from 49ff6d3c84 to 500745f41b.
>   http://git.racket-lang.org/plt/49ff6d3c84..500745f41b
>
> =[ One Commit ]=
> Directory summary:
>7.5% 
> pkgs/typed-racket-pkgs/typed-racket-doc/typed-racket/scribblings/reference/
>4.6% pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/types/
>6.6% pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/
>7.6% pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/private/
>7.5% pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/
>5.0% pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/
>   60.8% pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/
>
> ~~
>
> 500745f Stephen Chang  2014-06-24 18:16
> :
> | add typed/racket/async-channel
> :
>   A pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/async-channel.rkt
>   A 
> pkgs/typed-racket-pkgs/typed-racket-more/typed/racket/private/async-channel-wrapped.rkt
>   A 
> pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/fail/async-channel-contract.rkt
>   C 
> pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/{events.rkt
>  => events-with-async-channel.rkt} (86%)
>   C 
> pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/succeed/{threads-and-channels.rkt
>  => threads-and-async-channels.rkt} (50%)
>   M .../scribblings/reference/libraries.scrbl   |  1 +
>   M .../static-contracts/combinators/derived.rkt|  3 ++-
>   M .../typed-racket/base-env/base-types.rkt|  2 ++
>   M .../typed-racket/infer/infer-unit.rkt   |  3 +++
>   M .../typed-racket-lib/typed-racket/rep/type-rep.rkt  |  6 ++
>   M .../typed-racket-lib/typed-racket/types/abbrev.rkt  |  2 ++
>   M .../typed-racket-lib/typed-racket/types/printer.rkt |  2 ++
>   M .../typed-racket-lib/typed-racket/types/subtype.rkt |  3 +++
>   M .../typed-racket/private/type-contract.rkt  |  1 +
>   M .../typed-racket/scribblings/reference/types.scrbl  | 18 
> +-
>   M .../typed-racket/succeed/make-top-predicate.rkt |  1 +
>   M .../typed-racket/types/structural.rkt   |  2 ++
>
> =[ Overall Diff ]===
>
> pkgs/typed-racket-pkgs/typed-racket-doc/typed-racket/scribblings/reference/libraries.scrbl
> ~~
> --- 
> OLD/pkgs/typed-racket-pkgs/typed-racket-doc/typed-racket/scribblings/reference/libraries.scrbl
> +++ 
> NEW/pkgs/typed-racket-pkgs/typed-racket-doc/typed-racket/scribblings/reference/libraries.scrbl
> @@ -71,6 +71,7 @@ The following libraries are included with Typed Racket in 
> the
>  @defmodule/incl[typed/openssl/md5]
>  @defmodule/incl[typed/openssl/sha1]
>  @defmodule/incl[typed/pict]
> +@defmodule/incl[typed/racket/async-channel]
>  @defmodule/incl[typed/rackunit]
>  @defmodule/incl[typed/srfi/14]
>  @defmodule/incl[typed/syntax/stx]
>
> pkgs/typed-racket-pkgs/typed-racket-doc/typed-racket/scribblings/reference/types.scrbl
> ~~
> --- 
> OLD/pkgs/typed-racket-pkgs/typed-racket-doc/typed-racket/scribblings/reference/types.scrbl
> +++ 
> NEW/pkgs/typed-racket-pkgs/typed-racket-doc/typed-racket/scribblings/reference/types.scrbl
> @@ -4,7 +4,8 @@
>  "numeric-tower-pict.rkt"
>  scribble/eval
>  racket/sandbox)
> -   (require (for-label (only-meta-in 0 [except-in typed/racket for])))]
> +   (require (for-label (only-meta-in 0 [except-in typed/racket for])
> +   racket/async-channel))]
>
>  @(define the-eval (make-base-eval))
>  @(the-eval '(require (except-in typed/racket #%top-interaction 
> #%module-begin)))
> @@ -412,6 +413,21 @@ corresponding to @racket[trest], where @racket[bound]
>  @ex[(lambda: ([x : Any]) (if (channel? x) x (error "not a channel!")))]
>  }
>
> +@defform[(Async-Channelof t)]{An @rtech{asynchronous channel} on which only 
> @racket[t]s can be sent.
> +@ex[
> +(require typed/racket/async-channel)
> +(ann (make-async-channel) (Async-Channelof Symbol))
> +]
> +}
> +
> +@defidform[Async-ChannelTop]{is the type of an @rtech{asynchronous channel} 
> with unknown
> +  message type and is the supertype of all asynchronous channel types. This 
> type typically
> +  appears in programs via the combination of occurrence typing and
> +  @racket[async-channel?].
> +@ex[(require typed/racket/async-channel)
> +(lambda: ([x : Any]) (if (async-channel? x) x (error "not an 
> async-channel!")))]
> +}
> +
>  @defform*[[(Parameterof t)
> (Parameterof s t)]]{A @rtech{parameter} of @racket[t].  If two 
> type arguments are supplied,
>   the first is the type the parameter 
> accepts, and the second is the type returned.
>
> pk