IT

일급 기능과 고차 기능의 차이점

lottoking 2020. 7. 13. 07:53
반응형

일급 기능과 고차 기능의 차이점


궁금하네요 여부 / 사이에 어떤 차이 퍼스트 클래스 기능높은 주문 기능 .

나는 그 두 위키 페이지를 읽습니다 다소 비해합니다. 그들이 똑같이 이야기한다면 왜 두 가지 용어가 필요합니까?

Google을 시도했지만 유용한 제안을했습니다.


차이가 있습니다. 언어에 일급 함수가 실제로 말하면 언어가 함수를 값으로 취급한다는 것을 의미합니다. 함수를 변수에 할당하고 있습니다. 상위 함수는 다른 함수에서 작동하는 함수입니다. 하나 이상의 함수를 인수로 사용하고 함수를 리턴 할 수도 있습니다.

"고차"개념은 수학적 의미의 함수와 같은 일반적인 함수에 있습니다. "일류"개념은 프로그래밍 언어의 함수와 만 관련이 있습니다. "일류 함수"와 같은 함수를 거의 사용하지 않습니다. “언어가 일급 기능을 지원하지 않는다”고 말하는 것이 훨씬 일반적입니다.

고차 함수를 지원하지 않는 일급 함수를 사용하는 언어와 일류 함수를 지원하지 않는 언어와 일류 언어 함수를 지원하지 않습니다.


퍼스트 클래스 함수 는 객체처럼 취급 변수에 할당 가능한 함수입니다.

고차 함수 는 하나의 일급 함수를 매개 변수로 취하는 함수입니다.


그들 그들.

퍼스트 클래스 기능

전체적으로 처리되는 언어의 값을 "퍼스트 클래스"라고합니다. 배포는 데이터 구조에 저장되거나 전달 제어 구조에 있습니다.

함수 유형으로 값을 지원하고 비 기능 값과 동일하게 취급하는 언어는 "일등 함수"라고 할 수 있습니다.

고차 함수

퍼스트 클래스 함수를 수행하는 결과 중 하나는 함수를 다른 함수에 인수로 할 수있는 것입니다. 이제 "고차"입니다. 함수를 인수로 취하는 함수입니다.

일반적인 예는 "지도"입니다

map :: (a -> b) -> [a] -> [b]
map f []     = []
map f (x:xs) = f x : map f xs

즉, 함수와 배열을 가져와 각 요소에 함수가 새 배열을 반환합니다.

기능적 언어 (기능이 프로그램을 구축하는 주요 수단 인 언어)는 일급 기능이 있습니다. 대부분의 경우 고차 함수가 있습니다 (예를 들어 Excel과 같은 언어는 매우 드물지만 예외적으로 작동하지만 고차는 아닙니다).


이전 답변 외에도 일급 함수가있는 언어는 자동으로 고차 함수를 표현할 수 있습니다 (다른 값과 많은 함수를 매개 변수로 많은 수 있기 때문에).

반면에, 고차 함수를 지원하지만, 함수를 일급으로하지 않는 함수 (및 함수 인 매개 변수가 특수하게 처리되고 "일반적인"값 많은 변수와 다른 경우)는 상상할 수 없습니다.

따라서 (언어 기능 기능) 일급 함수의 존재는 고차 함수의 존재를 의미하지만 다른 방법은 아닙니다.


일등석 기능은 다음과 가능합니다.

  • 변수에 저장
  • 함수에서 반환됩니다.
  • 다른 함수에 인수로 전달하십시오.

고차 함수 는 다른 함수를 반환하는 함수입니다.

예를 들면 다음과 같습니다.

function highOrderFunc() {
  return function () {
    alert('hello');
  };
}

일급 함수는 다른 유형 (내부, 부울, 숫자 ...)으로 수행 할 수있는 모든 것을 의미하며 함수로 수행 할 수 있습니다.

예를 들어 변수에 변수를 할당하고 전달하고 즉시 작성하십시오.

참고 URL : https://stackoverflow.com/questions/10141124/any-difference-between-first-class-function-and-high-order-function

반응형