시스템 클래스 GENERIC-FUNCTION — 제네릭 함수

시스템 클래스 GENERIC-FUNCTION — 제네릭 함수

같은 이름의 함수가 인자의 클래스에 따라 다르게 동작하도록 만들고 싶을 때, 바로 CLOS의 제네릭 함수(generic function)를 생각하게 되죠. 이 페이지는 제네릭 함수가 무엇인지 정리한 내용이에요.

출처: CLHS — System Class GENERIC-FUNCTION

클래스 우선순위 목록

generic-function, function, t

본문 (Description)

제네릭 함수(generic function)자신에게 주어진 인자의 클래스나 동일성(identity)에 따라 행동이 달라지는 함수입니다.

제네릭 함수 객체는 다음과 같은 정보를 담고 있어요.

  • 메서드(methods) 의 집합
  • 람다 리스트(lambda list)
  • 메서드 결합 타입(method combination type)
  • 그 밖의 정보

여기서 메서드들은 제네릭 함수의 클래스별 행동과 연산을 정의합니다. 어떤 메서드가 제네릭 함수를 특화(specialize) 한다고 표현해요.

제네릭 함수가 호출되면, 자신의 인자들의 클래스나 동일성에 기반해 메서드들의 부분집합을 실행합니다. 즉 평범한 함수처럼 하나의 본문만 실행하는 게 아니라, 인자에 맞는 메서드들을 골라 실행하는 거죠.

중요한 점은 제네릭 함수도 일반 함수와 똑같은 방식으로 사용할 수 있다는 거예요. 구체적으로:

  • funcallapply의 인자로 쓸 수 있고
  • 전역(global) 또는 지역(local) 이름을 가질 수 있습니다

즉 제네릭 함수는 "특별한 함수"라기보다, 다형적 호출을 지원하는 일종의 함수 타입이라고 이해하면 돼요.

더 알아보기 (Learn more)