DBIO[A] => IO[A]
IOyou don't need to worry about the typeclass bits, so for example
@mpilquist re: non-daemon thread logger.
I'm not sure I've actually ever used raw threads before. Is there anything special I need to do in order to ensure that the daemon thread I create is on the right thread pool, not submitted to one the IOApp is about to close? Is it enough if I add a shutdown hook?
Refaround, and flatMap to seal the region of sharing
F[F[A]]is "create shared state to store memoization"
F[A]is "read or populate the shared memoization state"
F[_]means in terms of language feature