누가 고등 기능 및 / 또는 일등 시민이라는 용어를 처음으로 만들었습니까?


9

Haskell, O'Caml 또는 LISP 이전에는 고차 함수가 학술 연구 주제였으며 수학에서는 Schönfinkel (1967)과 Haskell Curry (1968)는 이미 카레와 같은 기술을 적용했음을 이해하고 있습니다. 모든 프로그래밍 언어로 사용 가능하기 전이었습니다.

Wikipedia에 따르면 , Scheme 은 일류 시민으로서 적절한 고차 함수를 도입 한 최초의 언어 였지만, 우리가 원래 아이디어를 귀속시킬 수있는 사람이 있습니까? 1930 년대에 람다 미적분학을 발명 한 알론조 교회일까요? 좀 더 구체적으로 말하면, 누가 다음과 같은 정의를 만들어 냈으며, 나는 여러 서적과 온라인 자료에서 여러 가지 역 어구를 보았습니다.

함수는 다른 함수를 인수로 사용하거나 함수를 반환 할 때 순서가 높은 것으로 간주됩니다. 함수를 인수 또는 리턴 유형으로 사용하지 않는 함수를 1 차 함수라고합니다.


1
Moses Schönfinkel을 의미합니까? 그렇다면 당신은 1967 년 에 그를 잘못 알고 있어야합니다 . 그는 1942 년 빈곤에서 사망했다 .
Petr Pudlák

LISP 이전에는 1967 년도 아닙니다. :-)
jimwise

답변:


9

Frege는 "Funktion und Begriff"(1891)에서 다음과 같이 말합니다.

Funktionen von Gegenständen grundverschieden sind, so sin auch Funktionen, deren Argumente Funktionen sind und sein müssen, grundverschieden von Funktionen, deren Argumente Gegenstände sind und nichts anderes sein können. Funktionen erster 님이 Jenie Funktionen zweiter Stufe에 있습니다.

영어로 (내 번역) :

사물과 함수가 다르듯이, 인수도 사물이어야하는 함수와 근본적으로 다른 함수 인 함수도 있습니다. 나는 1 차의 후자 함수, 2 차의 전자 함수라고 부릅니다.


1
큰 인용! 물론 그것은 frege 일 것이다.
sclv

현대 함수형 프로그래밍은 가능한 한 반대 관점을 취한다는 점에 흥미가 있습니다. (또는 적어도 닫힌 범주에서 작업 할 때마다) 인수가 함수 인 함수와 인수가 필요한 함수 사이에는 차이가 없습니다.
크리스 테일러

@ChrisTaylor :)를 섞을 때 타입 체커는 여전히 나에게 상기시켜줍니다.
Ingo

1
친구도 기능입니다. (
Mit

1
나는 한 번 논리학을 공부하고 상수와 함수를 구별하지 않은 도메인에 대한 정의를 사용했습니다. 상수 (값)는 인수가없는 함수입니다. 즉, 값이 입력 값에 의존하지 않는 함수입니다. 따라서 공동 도메인에는 하나의 값만 포함됩니다.
Giorgio

3

위키 백과 기사는 이미 "일류 시민"이라는 용어를 Strachey에 귀속시킵니다.

"고차 함수"나는 고차와 일차 논리의 구별로 거슬러 올라가는 날짜를 상상합니다.

https://en.wikipedia.org/wiki/Higher-order_logichttp://plato.stanford.edu/entries/logic-higher-order/를 참조 하십시오 .


고차 논리와 고차 함수가 쉽게 상호 교환 가능한지 여부는 확실하지 않습니다. Strachey를 지적 해 주셔서 감사합니다.
Abel

2
"고차 함수"는 Frege의 작업 (예를 들어 함수를 인수로 취하는 함수)에 존재하며, 람다 미적분학에 대한 교회의 기본 작업보다 훨씬 앞서 있습니다. 고전적인 1 차 논리의 술어는 정확히 부울 값 함수이므로, 이것이 용어의 원천이 될 수 있다는 두 번째 sclv의 제안입니다.
Philip JF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.