packages feed

extensible-effects-concurrent-2.0.0: examples/example-4/Main.hs

module Main where

import Control.Eff
import Control.Eff.Concurrent

main :: IO ()
main = defaultMain example

example :: Eff Effects ()
example = do
  person <- spawn "alice" alice
  replyToMe <- self
  sendMessage person replyToMe
  personName <- receiveMessage
  logInfo (LABEL "I just met " (MSG personName))

alice :: Eff Effects ()
alice = do
  logInfo (MSG "I am waiting for someone to ask me...")
  sender <- receiveMessage
  sendMessage sender ("Alice" :: String)
  logInfo sender (MSG " message received.")