collection 순회는 고정하고 판단과 변환을 함수 값으로 분리한다.
원본 encounter order를 제공한다.
T를 유지할지 결정한다.
T를 R로 바꾼다.
새 immutable snapshot을 반환한다.
핵심: 구체 element type이 바뀌어도 loop algorithm은 재사용된다.