Raku의 all — 모든 요소가 조건을 만족하는지

Raku의 all — 모든 요소가 조건을 만족하는지 (All Junction)

여러 값이 전부 어떤 조건을 만족하는지 한 번에 묻고 싶을 때가 있어요. all은 "이 모든 값이"라는 의미의 All Junction을 만들어서, 각 값에 조건을 걸고 그 결과를 논리적으로 합쳐 주는 루틴이에요.

출처: Raku 공식 문서 — routine all

시그니처

method all(        --> Junction:D)
multi  all(+values --> Junction:D)
multi  all(@values --> Junction:D)

invocant나 인자들을 리스트로 해석해서, 그 리스트로부터 All Junction을 만들어요.

어떻게 쓰는지

Junction은 뒤에 붙여서도, 앞에 함수처럼 써서도 쓸 수 있어요. 핵심은 각 요소를 개별적으로 비교한 뒤 '전부'라는 논리로 합친다는 거예요.

say so 3 < <2 3 4>.all;         # OUTPUT: «False␤»
say so 1 < all(<2 3 4>);        # OUTPUT: «True␤»

첫 줄은 3 < 2, 3 < 3, 3 < 4를 각각 평가해서 전부 참이어야 True가 돼요. 3 < 3이 거짓이므로 결과는 False예요. 둘째 줄은 1 < 2, 1 < 3, 1 < 4가 전부 참이니 True죠.

이렇게 Junction을 쓰면 &&로 일일이 연결하지 않아도 여러 조건을 간결하게 합칠 수 있어요.