Advertisement
Guest User

Untitled

a guest
Oct 25th, 2020
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. data Interlocutor = Interlocutor Handle String deriving (Show)
  2.  
  3. getHandle (Interlocutor handle _) = handle
  4. getServerAddress (Interlocutor _ serverAddress) = serverAddress
  5.  
  6. type State = Map String Interlocutor
  7.  
  8. getServerAddresses :: State -> [String]
  9. getServerAddresses state = Data.List.map getServerAddress $ Data.List.map snd (M.toList state)
  10.  
  11. talk :: MVar State -> String -> Handle -> IO ()
  12. talk mvar address h = do
  13. print "test"
  14. line <- hGetLine h
  15. state <- takeMVar mvar
  16. putStrLn line
  17. let result = parseLine state address line
  18. let newState = fst result
  19. let answer = snd result
  20. let x = trace "newState" (show newState)
  21. print "test2"
  22. putMVar mvar newState
  23. case answer of
  24. Just value -> hPutStrLn h value
  25. Nothing -> return ()
  26. talk mvar address h
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement