master :: (DSL repr) => repr
          (RSing -> Process repr ())
master = lam $ \r -> do p     <- spawn r pingServer
                        myPid <- self
                        _     <- send p myPid
                        -- yield G: PtrW[p] > 0, PtrR[master] = 0
                        --       R: PtrW[master] > 0
                        _ :: repr (Pid RSing) <- recv
                        return tt
                        -- exit G: PtrR[master] = 1...
master :: (DSL repr) => repr
          (RSing -> Process repr ())
master = lam $ \r -> do p     <- spawn r pingServer
                        myPid <- self
                        _     <- send p myPid
                        -- yield G: PtrW[p] > 0, PtrR[master] = 0
                        --       R: PtrW[master] > 0
                        _ :: repr (Pid RSing) <- recv
                        return tt
                        -- exit G: PtrR[master] = 1...
master = lam $ \r -> do p     <- spawn r pingServer
                        myPid <- self
                        _     <- send p myPid
                        -- yield G: PtrW[p] > 0, PtrR[master] = 0
                        --       R: PtrW[master] > 0
                        _ :: repr (Pid RSing) <- recv
                        return tt
                        -- exit G: PtrR[master] = 1...