First-class (= High order), Second-class (= First order)

  • 서로 반대의 개념인데
  • First-class Citizen (High-order function) : 함수형 기능을 지원하는 언어처럼 함수를 하나의 객체로 취급해 인자로 받을 수 있고 함수를 반환하는것도 가능
  • Second-class Citizen (First-order function) : C 언어처럼 함수를 인자로 받지도 못하고 함수를 반환하지도 못하는 특성
    • 함수를 객체 / 변수와 별도로 취급함
    • 변수와 별도로 취급하기 때문에 변수를 저장하는 추상 메모리와 별도로 추가로 함수를 저장할 추상 메모리가 필요함