úÎÇ Safe-InferredA  sharing lock on a shared IO computation.  When it is free&, a computation can be started on it.  When it is locked(, started computation will not execute, G but instead block until the running computation finished, and receive  the same result. Creates a new sharing lock. :Request to start a computation on the given sharing lock. LIf a computation is already running on that lock, the requested computation M will not start, but instead block for the running computation to finish and 8 return the same result for all threads waiting for it. LEnsures that (a)synchronous exceptions in the computation will be forwarded ( to all threads waiting for its result.  Example: 3- A webserver that lists directory contents, using @ -- SharedIO to bundle clients fanatically hitting refresh. C- Without this, the file seeking would slow the server to a crawl.  main = do  fileScanSharedIO <- newSharedIO 7 runWebserver (handleRequest fileScanSharedIO) )handleRequest :: SharedIO -> IO [FilePath] ) handleRequest fileScanSharedIO = do = withSharedIO fileScanSharedIO (getDirectoryContents  largefolder) sharedio-0.1.0Control.Concurrent.SharedIOSharedIO newSharedIO withSharedIO