-- Based on the example program from page 41/42 of 
-- Pacheco "Parallel programming with MPI"

module Main where

import Control.Parallel.MPI.Simple

main :: IO ()
main = mpiWorld $ \_size rank -> do
   let root = 0
   if rank == root
      then mapM_ putStrLn =<< (gatherRecv commWorld root $ msg rank)
      else gatherSend commWorld root $ msg rank

msg :: Rank -> String
msg r = "Greetings from process " ++ show r ++ "!"
