pingServer :: (DSL repr) => repr (Process repr ())
pingServer = do myPid <- self
                -- yield G: PtrR[p] = 0
                --       R: PtrW[p] > 0
                p     <- recv
                send p myPid
                -- exit G: PtrW[p] > 0
pingServer :: (DSL repr) => repr (Process repr ())
pingServer = do myPid <- self
                -- yield G: PtrR[p] = 0
                --       R: PtrW[p] > 0
                p     <- recv
                send p myPid
                -- exit G: PtrW[p] > 0
pingServer = do myPid <- self
                -- yield G: PtrR[p] = 0
                --       R: PtrW[p] > 0
                p     <- recv
                send p myPid
                -- exit G: PtrW[p] > 0