Вот мне кажется я понимаю о чём ты. Ты делаешь что-то максимально общее, ведь в какой-то мысленной структуре в голове итеративный вызов read даёт последовательно значения Int.
Но типы как метки, вывод типов это ведь не просто какие-то предрассудки это вполне определённая методология. Обобщая до интферфейса read(): Int ты теряешь конкретику, как кодировать эффекты, как обеспечить ленивость и прочее
Не совсем. Я пытаюсь бороться с закостенелостью, с "единственно правильным решением". Стримы можно реализовать тонной разных способов, и у каждого будут плюсы и минусы.