úÎ ™IA synchronisation that is yet to be executed (and that returns a value). ? The functor instance allows you to modify the value after the  synchronisation has occurred. NA synchronous communication channel (i.e. the writer must wait until the read P is willing to read the value). Should only ever be used by one writer and one F reader -- the algorithm is not currently designed for anything else. JExecutes the actions until it finds one that returns True (at which point L it will execute no further actions). Returns True if an action did, False  if none of them did. MSynchronises on an event. This blocks the thread until the Event can occur. ; This may be a choice of several different events, via the  function. OCreates an event that represents sending the given value on the given channel. KCreates an event that represents receiving a value from the given channel. ACreates an event that is the choice of the given list of events. 9If the list is a singleton this is equivalent to calling  . If the  list is empty, and you call ' on the resulting event, it will block = forever (or GHC will throw you an exception because of it). KYou should not pass more than one event from each channel in the list (nor F combine two events that are themselves choices, such that you end up S combining more than one event from a channel) or undefined behaviour will result. %Creates a new communication channel.       sync-0.1Control.Concurrent.SyncEventChannelsyncsendrecvchoose newChannelevents _chanEventchanTVarIntEvent enrollCountoffersTVOffer offerThreadId offerEvents newIntEvent modifyTVar'anyM recordOfferofferAll checkCompleterevokebaseGHC.Listhead