A Ping/Pong Example

  1. import Prelude
  2. go :: Process ()
  3. go = do
  4. self <- getSelf
  5. pid <- spawn loop
  6. pid ! (self, :ping)
  7. receive
  8. :pong -> println "Pong!"
  9. pid ! :stop
  10. loop :: Process ()
  11. loop =
  12. receive
  13. (from, :ping) -> do
  14. println "Ping!"
  15. from ! :pong
  16. loop
  17. :stop -> return ()