조건 분기는 호출자로, 반복은 배치 함수로 옮기는 최적화의 조건
개발 해설 글이 조건 분기를 호출자에 모으고 반복을 배치 함수 안으로 옮기는 설계 원칙을 분석했다. 입력을 먼저 걸러 핵심 함수의 분기를 줄이고 준비 비용을 배치마다 한 번 내는 방식이다. 다만 필터를 앞당겨 계산을 줄이려면 변환 결과의 조건을 입력에 대한 저렴한 조건으로 바꿀 수 있어야 한다.
반복 밖으로 조건을 꺼내는 변환은 그 조건이 반복 중 변하지 않을 때 가능하다.
요소마다 달라지는 조건은 반복 자체에서 없앨 수 없으며, 경계에서 검사한 뒤 더 좁은 입력 타입으로 전달할 수 있다.
filter p . map f를 map f . filter (p . f)로 바꿔도 조건 검사에 f가 필요하면 계산량이 자동으로 줄지 않는다.
데이터베이스에서는 한쪽 테이블의 열만 참조하는 조건을 조인보다 먼저 적용해 조인 입력을 줄이는 방식과 연결된다.
배치 처리의 이점은 호출·준비 비용을 분산하고 내부 반복의 분기를 줄이는 데 있다.
호출자가 빈 값을 처리하고 핵심 함수는 유효한 값만 받게 하면, 함수의 입력 타입 자체로 전제조건을 표현할 수 있다.
원문
- Push Ifs Up and Fors Down: The Idiom, Its Algebra, and Its Limitsdebasishg.github.io · 원문 2026-10-08