Reader очень помогает, когда оказывается, что нескольким функциям в композиции нужны одни и те же данные. И чтобы они попали вниз по потоку, нужно, получается, снизу возвращать кортеж, а сверху принимать тоже кортеж, и не дай бог, между двумя функциями, которые обрабатывают это разделяемое состояние, оказывается одна, которая не обрабатывает. Тогда она получает состояние только, чтобы передать его в результат, никак не используя. А потом оказывается, что одна из этих функций работает ещё с одним состоянием, которое также нужно в той функции, которая не работает с первым разделяемым состоянием. Вот радости-то!