\begin{slide}{STM-Beispiel}

Spiel-Server, sobald wenigstens zwei Leute
eingeloggt sind, soll gespielt werden

\begin{verbatim}
login server s = atomically $ do
    m <- readTVar $ registry server
    let ok = not $ M.member ( name s ) m
    when ok $ writeTVar ( registry server ) 
            $ M.insert ( name s ) s m

select_players server = atomically $ do
    m <- readTVar $ registry server
    check $ M.size m >= 2
    return $ M.elems m
\end{verbatim}
\url{https://github.com/jwaldmann/mex}
\end{slide}
