using Nemerle.IO; using Nemerle.Concurrency; namespace Test { class RendezVous { class Thunk { [ChordMember] public Reply (j : int) : void; public Wait () : int chord { | Reply => j } } public f (i : int) : int { def t = Thunk (); af (i, t); t.Wait () } [ChordMember] private af (i : int, t : Thunk) : void; public g (j : int) : int chord { | af => t.Reply (j); i } } module Main { Main () : void { def rv = RendezVous (); async { def i = rv.f (3); assert (i == 13) } async { def i = rv.g (13); assert (i == 3) } } } } /* BEGIN-OUTPUT END-OUTPUT */