{-# LANGUAGE OverloadedStrings #-} import Control.Distributed.Process import Control.Monad.IO.Class import Control.Monad import System.IO import DistribUtils import Database (Database, createDB, get, set, rcdata) main = distribMain master rcdata master :: [NodeId] -> Process () master peers = do db <- createDB peers f <- liftIO $ readFile "Database.hs" let ws = words f zipWithM_ (set db) ws (tail ws) get db "module" >>= liftIO . print get db "xxxx" >>= liftIO . print forever $ do l <- liftIO $ do putStr "key: "; hFlush stdout; getLine when (not (null l)) $ do r <- get db l liftIO $ putStrLn ("response: " ++ show r) return ()