실행으로 확인하기
LISPEX
(reduce + 0 (map (lambda (x) (* x x)) (filter odd? (list 1 2 3 4))))관측 결과
OUTPUT
10패턴 따라가기
- 고릅니다.
filter는odd?가 참인1과3을 남깁니다. - 바꿉니다.
map이 남은 값을 같은 순서로 제곱해(1 9)를 만듭니다. - 합칩니다.
reduce가0에서 시작해 각 제곱을 더하여10을 만듭니다.
이 순서로 생각하세요
- 요소당 결과 하나는
map, 참값 선택은filter, 하나의 누적 결과는 fold를 사용합니다. - 엄격한 불리언 답이 정해지는 즉시 멈추려면
all?나any?를 사용합니다. - 콜백은 게스트 프로시저로 실행되어 오류, 탈출, 경고, 값 컨텍스트 규칙이 그대로 적용됩니다.
string-map과vector-map은 새 컬렉션을 만들고, 각for-each변형은 효과만 실행한 뒤 0개 값을 반환합니다.- 마지막 올바른 리스트를 위치 인자로 펼칠 때
apply를 사용하며 꼬리 적용을 보존합니다.
직접 확인하기
odd?를 even?로 바꾸면 같은 파이프라인은 무엇을 반환할까요?
답
2와 4를 남겨 (4 16)으로 제곱하고 20을 반환합니다.
흔한 오해
단일 값 순회 위치에서 콜백이 0개·다중 값을 내면 E320입니다.
다음으로
정확한 콜백 인자 수는 레퍼런스에서 확인하세요. 유지되는 조합기로 흐름이 잘 표현되지 않을 때는 재귀를 사용합니다.