Принципы не меняются. Но важный момент заключается в том, что Iterator - он для абстрагирования от реализации, а не для декомпозиции. Иначе можно упереться в то, что кто-то захочет работать с твоим "итератором" как с итератором, но упрётся в странные баги, связанные с тем, что в ФП называется "нарушением законов".