Любой. Основная боль от его кода (чем грешат и его "коллеги"), это создание модулей в том же эффекте, которым он параметризирован.
Т.е. почти везде там:
F[Alg[F]] / Resource[F, Alg[F]]
Вместо
F[Alg[G]] / Resource[F, Alg[G]]
+, особенно для либ
но в книге все же не используется ридер, а IO.
в целом есть и другие вещи, которые я не могу назвать лучшими практиками, но мне кажется лучшего чтива к сожалению пока что нет. ну и понятно, что любая книга несет в себе опыт/мнение/предпочтения автора