고차 함수(high order fuction)란 함수를 매개변수로 전달받거나 반환하는 함수를 의미합니다. 일반적으로 함수의 매개변수나 반환값은 데이터입니다. 그런데 데이터가 아닌 함수를 매개변수나 반환값으로 이용하는 함수를 고차 함수라 합니다. 이처럼 함수를 매개변수나 반환값으로 이용할 수 있는 것은 앞에서 살펴보았듯이 함수를 변수에 대입할 수 있기 떄문입니다. 다음 코드에서 hofFun()은 고차 함수입니다. 매개변수를 하나 선언했지만 타입이 함수입니다. 따라서 이 함수를 호출하려면 인자로 함수를 전달해야 합니다. 또한, 반환 타입 역시 함수이므로 호출 결과로 함수를 반환받습니다. fun hofFun(arg: (Int) -> Boolean): () -> String { val result = if(ar..