negate
전달한 술어를 논리적으로 뒤집은 술어를 반환합니다.
bool Function(T) negate<T>(bool Function(T) f)
강의
negate(f)는 임의의 x에 대해
!f(x)를 반환하는 새 술어를 돌려줍니다. 이미 이름이 붙은 술어가
있고(isEven, isEmpty,
matches(pattern)의 결과 등) 그 반대를 함수 값으로 쓰고 싶을 때
가장 유용합니다 — filter, reject를 비롯해
술어를 요구하는 어디에든, 로직을 다시 정의하지 않고 넘길 수 있습니다.
not과 혼동하지 마세요. not은
bool 값 하나를 뒤집고, negate는
술어 함수 자체를 뒤집습니다. 대략 negate(f)는
(x) => not(f(x))인 셈입니다.
데모 1 · 기본
데모 2 · 라이브러리 술어 뒤집기
negate는 라이브러리에 이미 있는 어떤 술어와도 조합됩니다.
값 기반 술어인 isEmpty가 그 예입니다.
직접 해 보기
연습: negate(isVowel)로 자음만 남겨 보세요.