Монады для записи в лог, чтения из внешнего окружения и работы с изменяемым состоянием: Reader, Writer, State. Ввод-вывод в чистых языках. Монада IO.
Reader
Writer
State
IO