타입 COMPILED-FUNCTION — 컴파일된 함수

타입 COMPILED-FUNCTION — 컴파일된 함수

Common Lisp 함수는 인터프리터로 실행될 수도, 컴파일되어 실행될 수도 있어요. 그중 "컴파일된 상태"를 나타내는 타입이 바로 COMPILED-FUNCTION입니다. 어떤 함수가 이 타입에 속하는지 정리한 페이지예요.

출처: CLHS — Type COMPILED-FUNCTION

슈퍼타입

compiled-function, function, t

본문 (Description)

어떤 함수가 컴파일된 함수(compiled-function) 인지 여부는 구현(implementation)이 판단할 수 있어요. 일반적으로 다음 두 조건을 만족하면 컴파일된 함수로 취급할 수 있습니다.

  • 런타임에 확장해야 할 매크로 참조가 없고
  • 로드 타임 값(load time value)에 대한 미해결 참조(unresolved reference)가 없을 때

컴파일의 맥락은 Section 3.2.2 (Compilation Semantics)에서 더 자세히 다뤄요.

그럼 실제로 어떤 함수들이 compiled-function 타입이 될까요? 대표적으로 다음과 같은 경우가 있어요.

  • compile-file로 컴파일된 파일 안에 어휘적으로(lexically) 정의가 나타나 있고, 그것을 load로 로드한 뒤의 함수들
  • compile 함수가 생성한 함수들

물론 그 외의 함수들도 구현에 따라 컴파일된 함수 타입이 될 수 있습니다. 즉 "컴파일되었는가"는 구현이 어떻게 컴파일을 처리하느냐에 따라 판가름나는 개념이에요.

더 알아보기 (Learn more)