Eerder maakten we reeds Monads die ons mogelijkheid tot logging gaven. In deze oefening voorzien we opnieuw logging, maar ditmaal voeren we onze logger uit in een aparte thread. Op die manier zou een complexe logger ons programma niet vertragen.

We maken gebruik van MVars om de communicatie tussen onze logging thread en main thread te verzorgen. We laten onze logging thread op twee types berichten wachten: de vraag om een bericht te loggen en om de thread de stoppen.

Opmerking: Het testen van de volgorde en correctheid van IO operaties is nog niet ingebouwd in de huidige versie van de Judge. Test daarom jouw code ook lokaal grondig.