Please take me off the list Thanks
On Fri, Sep 26, 2014 at 2:20 PM, <users-requ...@racket-lang.org> wrote: > Send users mailing list submissions to > users@racket-lang.org > > To subscribe or unsubscribe via the World Wide Web, visit > http://lists.racket-lang.org/users/listinfo > or, via email, send a message with subject or body 'help' to > users-requ...@racket-lang.org > > You can reach the person managing the list at > users-ow...@racket-lang.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of users digest..." > > > [Racket Users list: > http://lists.racket-lang.org/users ] > > > Today's Topics: > > 1. Tricky case of occurrence typing in Typed Racket (Konrad Hinsen) > 2. Re: Tricky case of occurrence typing in Typed Racket (Andrew Kent) > 3. Re: Tricky case of occurrence typing in Typed Racket > (Konrad Hinsen) > 4. Re: Tricky case of occurrence typing in Typed Racket (Andrew Kent) > 5. Re: ANN: DOS, Delimited-continuation-based Operating-system > Simulator (Michael Bradley, Jr.) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Fri, 26 Sep 2014 18:07:19 +0200 > From: Konrad Hinsen <konrad.hin...@fastmail.net> > To: users@racket-lang.org > Subject: [racket] Tricky case of occurrence typing in Typed Racket > Message-ID: > <21541.36663.168649.25871@Konrad-Hinsens-MacBook-Pro-2.local> > Content-Type: text/plain; charset=us-ascii > > Hi everyone, > > I am trying to convince Typed Racket that after a run-time check on > some list, its elements are all of a given type. This is just like > occurrence typing based on a predicate, except that my predicate > is more complicated. > > My first attempt was this: > > > #lang typed/racket > > (struct: foo ()) > (struct: bar ()) > (define-type FooOrBar (U foo bar)) > > (: f-bar (-> (Listof bar) Void)) > (define (f-bar xs) > (void)) > > (: f-mixed (-> (Listof FooOrBar) Void)) > (define (f-mixed xs) > (void)) > > (: f (-> (Listof FooOrBar) Void)) > (define (f xs) > (if (for/and : Boolean ([x xs]) (bar? x)) > (f-bar xs) ; contains only bars > (f-mixed xs) ; may contain foos as well > )) > > This yields a type error: > > ; /Users/hinsen/projects/racket/foobar.rkt:18:13: Type Checker: type > mismatch > ; expected: (Listof bar) > ; given: (Listof FooOrBar) > ; in: xs > > After reading section 5 of the Typed Racket Guide, in particular section > 5.2 entitled "Filters and Predicates", I thought I could simply define my > own predicate with a type annotation: > > #lang typed/racket > > (struct: foo ()) > (struct: bar ()) > (define-type FooOrBar (U foo bar)) > > (: f-bar (-> (Listof bar) Void)) > (define (f-bar xs) > (void)) > > (: f-mixed (-> (Listof FooOrBar) Void)) > (define (f-mixed xs) > (void)) > > (: pure-bars? (-> (Listof FooOrBar) Boolean : (Listof bar))) > (define (pure-bars? xs) > (for/and : Boolean ([x xs]) (bar? x))) > > (: f (-> (Listof FooOrBar) Void)) > (define (f xs) > (if (pure-bars? xs) > (f-bar xs) ; contains only bars > (f-mixed xs) ; may contain foos as well > )) > > But this got me only into more trouble - now I don't even understand the > error message any more: > > ; /Users/hinsen/projects/racket/foobar.rkt:17:2: Type Checker: type > mismatch; > ; mismatch in filter > ; expected: (((Listof bar) @ xs) | (! (Listof bar) @ xs)) > ; given: (Top | Top) > ; in: (for/and : Boolean ((x xs)) (bar? x)) > > Is there a way to do this kind of test? > > Konrad. > > > ------------------------------ > > Message: 2 > Date: Fri, 26 Sep 2014 12:12:29 -0400 > From: Andrew Kent <amk.k...@gmail.com> > To: Konrad Hinsen <konrad.hin...@fastmail.net> > Cc: users@racket-lang.org > Subject: Re: [racket] Tricky case of occurrence typing in Typed Racket > Message-ID: > <CAMf1y4JeW-jdYeuJP-0x=U=tjb3tahxqvamum3tsbefvgsa...@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Will andmap work for you? > > (struct: foo ()) > (struct: bar ()) > (define-type FooOrBar (U foo bar)) > > (: f-bar (-> (Listof bar) Void)) > (define (f-bar xs) > (void)) > > (: f-mixed (-> (Listof FooOrBar) Void)) > (define (f-mixed xs) > (void)) > > (: f (-> (Listof FooOrBar) Void)) > (define (f xs) > (if (andmap bar? xs) > (f-bar xs) ; contains only bars > (f-mixed xs) ; may contain foos as well > )) > > On Fri, Sep 26, 2014 at 12:07 PM, Konrad Hinsen <konrad.hin...@fastmail.net> > wrote: > >> Hi everyone, >> >> I am trying to convince Typed Racket that after a run-time check on >> some list, its elements are all of a given type. This is just like >> occurrence typing based on a predicate, except that my predicate >> is more complicated. >> >> My first attempt was this: >> >> >> #lang typed/racket >> >> (struct: foo ()) >> (struct: bar ()) >> (define-type FooOrBar (U foo bar)) >> >> (: f-bar (-> (Listof bar) Void)) >> (define (f-bar xs) >> (void)) >> >> (: f-mixed (-> (Listof FooOrBar) Void)) >> (define (f-mixed xs) >> (void)) >> >> (: f (-> (Listof FooOrBar) Void)) >> (define (f xs) >> (if (for/and : Boolean ([x xs]) (bar? x)) >> (f-bar xs) ; contains only bars >> (f-mixed xs) ; may contain foos as well >> )) >> >> This yields a type error: >> >> ; /Users/hinsen/projects/racket/foobar.rkt:18:13: Type Checker: type >> mismatch >> ; expected: (Listof bar) >> ; given: (Listof FooOrBar) >> ; in: xs >> >> After reading section 5 of the Typed Racket Guide, in particular section >> 5.2 entitled "Filters and Predicates", I thought I could simply define my >> own predicate with a type annotation: >> >> #lang typed/racket >> >> (struct: foo ()) >> (struct: bar ()) >> (define-type FooOrBar (U foo bar)) >> >> (: f-bar (-> (Listof bar) Void)) >> (define (f-bar xs) >> (void)) >> >> (: f-mixed (-> (Listof FooOrBar) Void)) >> (define (f-mixed xs) >> (void)) >> >> (: pure-bars? (-> (Listof FooOrBar) Boolean : (Listof bar))) >> (define (pure-bars? xs) >> (for/and : Boolean ([x xs]) (bar? x))) >> >> (: f (-> (Listof FooOrBar) Void)) >> (define (f xs) >> (if (pure-bars? xs) >> (f-bar xs) ; contains only bars >> (f-mixed xs) ; may contain foos as well >> )) >> >> But this got me only into more trouble - now I don't even understand the >> error message any more: >> >> ; /Users/hinsen/projects/racket/foobar.rkt:17:2: Type Checker: type >> mismatch; >> ; mismatch in filter >> ; expected: (((Listof bar) @ xs) | (! (Listof bar) @ xs)) >> ; given: (Top | Top) >> ; in: (for/and : Boolean ((x xs)) (bar? x)) >> >> Is there a way to do this kind of test? >> >> Konrad. >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users >> > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > <http://lists.racket-lang.org/users/archive/attachments/20140926/72332d84/attachment-0001.html> > > ------------------------------ > > Message: 3 > Date: Fri, 26 Sep 2014 18:28:03 +0200 > From: Konrad Hinsen <konrad.hin...@fastmail.net> > To: users@racket-lang.org > Subject: Re: [racket] Tricky case of occurrence typing in Typed Racket > Message-ID: > <21541.37907.627925.114871@Konrad-Hinsens-MacBook-Pro-2.local> > Content-Type: text/plain; charset=us-ascii > > Andrew Kent writes: > > > Will andmap work for you? > > Interesting... I didn't know about that one. > > For my demonstration code, that's indeed a good solution. In my real > application, the test is more complicated. I need to check all > elements of a list for conformance to a union type, so I have no > prefabricated predicate, not even for the elements of my list. > > Konrad. > > > ------------------------------ > > Message: 4 > Date: Fri, 26 Sep 2014 12:48:05 -0400 > From: Andrew Kent <amk.k...@gmail.com> > To: Konrad Hinsen <konrad.hin...@fastmail.net> > Cc: users@racket-lang.org > Subject: Re: [racket] Tricky case of occurrence typing in Typed Racket > Message-ID: > <camf1y4lensg_ti2s_sfeadxy6zo_p5no9c8-rc6q_tnscg4...@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Does using andmap with the custom predicates you alluded to for that union > you mentioned work? > > Something like this perhaps?: > > #lang typed/racket > > (struct: T1 ()) > (struct: T2 ()) > (define-type T1or2 (U T1 T2)) > > (: T1or2? (-> Any Boolean : T1or2)) > (define (T1or2? a) > (or (T1? a) (T2? a))) > > > (: listof-T1or2 (-> Any Boolean : (Listof T1or2))) > (define (listof-T1or2 l) > (and (list? l) (andmap T1or2? l))) > > > > On Fri, Sep 26, 2014 at 12:28 PM, Konrad Hinsen <konrad.hin...@fastmail.net> > wrote: > >> Andrew Kent writes: >> >> > Will andmap work for you? >> >> Interesting... I didn't know about that one. >> >> For my demonstration code, that's indeed a good solution. In my real >> application, the test is more complicated. I need to check all >> elements of a list for conformance to a union type, so I have no >> prefabricated predicate, not even for the elements of my list. >> >> Konrad. >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users >> > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: > <http://lists.racket-lang.org/users/archive/attachments/20140926/30da28f4/attachment-0001.html> > > ------------------------------ > > Message: 5 > Date: Fri, 26 Sep 2014 18:15:31 +0000 (UTC) > From: "Michael Bradley, Jr." <michaelsbradle...@gmail.com> > To: users@racket-lang.org > Subject: Re: [racket] ANN: DOS, Delimited-continuation-based > Operating-system Simulator > Message-ID: <loom.20140926t201005-...@post.gmane.org> > Content-Type: text/plain; charset=us-ascii > > Jay McCarthy <jay.mccarthy@...> writes: > >> >> I've just released the game architecture library I talked about in >> part 2 of my RacketCon talk. >> >> The big picture of this library is to make World-style programs more >> compositional by (a) using continuations to hide the internal state >> (including control state) of components and (b) using environments as >> a standard monoid-based inter-component communication channel. A >> monoid is used to ensure that the components can be evaluated in any >> order. Despite assumptions some have about continuations and pure >> functional programming, it is incredibly efficient and can run at >> 60FPS, as demonstrated in get-bonus. >> >> You can get it with >> >> raco pkg install dos >> >> And you can try out the demo with >> >> racket -l dos/examples/win >> >> The demo source is a bare 39 lines: >> >> https://github.com/jeapostrophe/dos/blob/master/dos/examples/win.rkt >> >> and I provide the non-DOS version for comparison: >> >> https://github.com/jeapostrophe/dos/blob/master/dos/examples/win-long.rkt >> >> The core library has a mere 36 lines: >> >> https://github.com/jeapostrophe/dos/blob/master/dos/main.rkt >> > > > > Hi Jay, > > I really enjoyed your talk on get-bonus at RacketCon last weekend, and > appreciate your sharing DOS with all of us. Also, your presentation at > Strange Loop 2013 was my first introduction to delimited continuations in > Racket! > > I have benefited from a number of your blog posts in the past, e.g. the one > on an improved threading macro, and was wondering if you would consider > doing a write-up on DOS? > > Best regards, > > -- > Michael Bradley, Jr. > @michaelsbradley > > > > > End of users Digest, Vol 109, Issue 60 > ************************************** ____________________ Racket Users list: http://lists.racket-lang.org/users