Hello,
In my (still unreleased) usb-1.0 (https://github.com/basvandijk/usb)
library I use the GHC event manager for managing events from the
underlying `libusb` C library.
To work with the library a user has to initialize it using:
newCtx ∷ IO Ctx
The `Ctx` then allows the user to see the USB devices attached to the
system using:
getDevices ∷ Ctx → IO [Device]