궁금하네요 여부 / 사이에 어떤 차이 퍼스트 클래스 기능 및 높은 주문 기능 .
나는 그 두 위키 페이지를 읽었고 다소 비슷해 보입니다. 그들이 똑같이 이야기한다면 왜 두 가지 용어가 필요합니까?
Google을 시도했지만 유용한 것을 찾지 못했습니다.
궁금하네요 여부 / 사이에 어떤 차이 퍼스트 클래스 기능 및 높은 주문 기능 .
나는 그 두 위키 페이지를 읽었고 다소 비슷해 보입니다. 그들이 똑같이 이야기한다면 왜 두 가지 용어가 필요합니까?
Google을 시도했지만 유용한 것을 찾지 못했습니다.
답변:
차이가 있습니다. 언어에 일급 함수가 있다고 말하면 언어가 함수를 값으로 취급한다는 것을 의미합니다. 함수를 변수에 할당하고 전달할 수 있습니다. 상위 함수는 다른 함수에서 작동하는 함수입니다. 하나 이상의 함수를 인수로 사용하고 함수를 리턴 할 수도 있습니다.
"고차"개념은 수학적 의미의 함수와 같은 일반적인 함수에 적용될 수 있습니다. "일류"개념은 프로그래밍 언어의 함수와 만 관련이 있습니다. “일류 함수”와 같은 함수를 언급 할 때는 거의 사용되지 않습니다. “언어가 일급 기능을 지원하지 않았거나하지 않았다”고 말하는 것이 훨씬 일반적입니다.
고차 함수를 지원하지 않는 일급 함수를 사용하는 언어와 반대로 고차 함수를 사용하지만 일류 함수를 지원하지 않는 언어는 상상하기 어렵 기 때문에 두 가지가 밀접하게 관련되어 있습니다.
int
또는 char
그들이 할 수 없다는 점에서, 명시 적으로 당신이 원하는 목적지 (함수 기관) 정의.
그들은 다릅니다.
퍼스트 클래스 기능
전체적으로 균일하게 처리되는 언어의 값을 "퍼스트 클래스"라고합니다. 그것들은 데이터 구조에 저장되거나 인수로 전달되거나 제어 구조에 사용될 수 있습니다.
함수 유형으로 값을 지원하고 비 기능 값과 동일하게 취급하는 언어는 "일등 함수"라고 할 수 있습니다.
고차 함수
퍼스트 클래스 함수를 갖는 결과 중 하나는 함수를 다른 함수에 인수로 전달할 수 있어야한다는 것입니다. 후자의 기능은 이제 "고차"입니다. 함수를 인수로 취하는 함수입니다.
일반적인 예는 "지도"입니다
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
즉, 함수와 배열을 가져와 각 요소에 함수가 적용된 새 배열을 반환합니다.
기능적 언어 (기능이 프로그램을 구축하는 주요 수단 인 언어)에는 모두 일급 기능이 있습니다. 대부분의 경우 고차 함수가 있습니다 (예를 들어 Excel과 같은 언어는 매우 드물지만 예외적으로 작동하지만 고차는 아닙니다).
이전 답변 외에도 일급 함수가있는 언어는 자동으로 고차 함수를 표현할 수 있습니다 (다른 값처럼 함수를 매개 변수로 전달할 수 있기 때문에).
반면에, 고차 함수를 지원하지만, 함수를 일급으로하지 않는 함수 (및 함수 인 매개 변수가 특수하게 처리되고 "일반적인"값 매개 변수와 다른 경우)는 상상할 수 없습니다.
따라서 (언어 기능으로서) 일급 함수의 존재는 고차 함수의 존재를 의미하지만 다른 방법은 아닙니다.