[컴] First class citizen

 1급 시민 / 1급 객체 / 1급 함수


First class citizen

First class citizen 의 특징은 다음과 같다. ref. 1 에 보면 ’Robin Popplestone’이 제안한 정의다.

  1. 모든 items 들은 function의 실질적인 parameters 이 될 수 있다.
  2. 모든 items 들은 function 의 결과로 return 될 수 있다.
  3. 모든 items 들은 할당문(assignment statement) 의 subject 가 될 수 있다. (변수등에 저장할 수 있다.)
  4. 모든 items 들은 같은지 여부(equality) 를 테스트할 수 있다.

대체로 모든 언어에서 간단한 스칼라 data type 들은 거의 대부분 first-class 이다.(예를 들면, integer, float 등등)

만약 ‘이 언어가 first-class function 을 갖고 있다’ 고 이야기한다면, 그것은 그 언어의 function 이 first-class citizen 의 특징을 가졌다는 이야기이다.

간단한 예

간단히 예를 들면, java 옛버전 에서는 함수를 parameter 로 넘기지 못한다.(JDK8 이후 가능하다.) 그래서 java 에서는 function 이 first-class citizen 이 아니다.

Higher-order function 의 특징

  • 함수를 인자(함수 parameter) 를 갖거나
  • 함수를 return 해준다.

그래서 higher-order function 을 만드려면, function 이 first-class citizen 이 돼야 한다.

See Also

  1. Currying 과 partial function

References

  1. First-class citizen - Wikipedia

댓글 없음:

댓글 쓰기