Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data Interlocutor = Interlocutor Handle String deriving (Show)
- getHandle (Interlocutor handle _) = handle
- getServerAddress (Interlocutor _ serverAddress) = serverAddress
- type State = Map String Interlocutor
- getServerAddresses :: State -> [String]
- getServerAddresses state = Data.List.map getServerAddress $ Data.List.map snd (M.toList state)
- talk :: MVar State -> String -> Handle -> IO ()
- talk mvar address h = do
- print "test"
- line <- hGetLine h
- state <- takeMVar mvar
- putStrLn line
- let result = parseLine state address line
- let newState = fst result
- let answer = snd result
- let x = trace "newState" (show newState)
- print "test2"
- putMVar mvar newState
- case answer of
- Just value -> hPutStrLn h value
- Nothing -> return ()
- talk mvar address h
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement