который rustc разворачивает в циклы
Ну видишь, а в фп это бы делал выбранный тобой интерпретатор. Передал бы дсл в цикловый интерпретатор, был бы цикловый, передал бы в обычный список - были бы два прохода, передал бы в ленивый список был бы один проход.