anchor.diff:      member this.Put(a) = send put a
       member this.Get() = signal get
   
  +
  +
  +let b =  new Buffer<int>()
   let spawn  =  let def = Join.Create()
                 let sp =  def.async<unit->unit>()
                 def.When(sp).Do(fun f -> f())
                 fun f  -> sp.Invoke(f) 
   
  -let b =  new Buffer<int>()
  +
   
   do spawn(fun() -> for i in 1 .. 10 do b.Put(i))
   
   for i in 1..10 do printf "\n%i" (b.Get())
   
   do System.Console.ReadKey()
  -
   
   let phils n =
     let def = Join.Create(2*n)
  
positive.code: 
  
  open Microsoft.Research.Joins
  
  // some tentative helper functions to avoid F#'s  c.Invoke() syntax for channel sends
  // perhaps we should just stick to c.Invoke()
  
negative.code:   signal f1;signal f2; signal f3; signal f4;signal f5
    fork p1; fork p2; fork p3; fork p4
    
  *)