커널 폼과 함수

커널 폼과 함수 (Kernel Forms and Functions)

racket/kernel은 Racket 컴파일러와 런타임 시스템에 내장된 최소한의 구문 폼과 함수만 제공하는 크로스 페이즈 영속 모듈이에요. 이 문서에서는 racket/kernelracket/kernel/init이 제공하는 바인딩의 범위를 설명합니다.

출처: Racket Reference

본문

#lang racket/kernel package: base

racket/kernel 라이브러리는 Racket 컴파일러에 내장된 폼들과 런타임 시스템에 내장된 함수들만 포함하는, 크로스 페이즈 영속(cross-phase persistent) 모듈입니다.

'최소한(minimal)'이라는 것은 racket/kernel이 Racket 컴파일러에 내장된 폼들과 런타임 시스템에 내장된 함수들만 포함한다는 뜻이에요. 현재 바인딩 집합은 특별히 작지도 않고, 내장 함수들의 집합이 자주 바뀔 수 있기 때문에 특히 잘 정의되어 있지도 않습니다. racket/kernel을 주의해서 사용하고, 그 사용이 호환성 문제를 만들 수 있다는 점을 경계하세요.

racket/kernel 모듈은 완전히 확장된 프로그램의 문법(완전히 확장된 프로그램 참고)에 있는 모든 바인딩을 익스포트하지만, lambdaλ로는 #%plain-lambda를, #%app으로는 #%plain-app을, #%module-begin으로는 #%plain-module-begin을 제공합니다. #%datum(이것은 quote로 확장됩니다)을 제외하면, racket/kernel은 다른 어떤 구문 바인딩도 제공하지 않습니다.

racket/kernel 모듈은 또한 racket/base의 함수 바인딩을 많이 익스포트하며, racket/base에서는 개선된 변형을 익스포트하기 때문에 racket/base가 익스포트하지 않는 몇몇 다른 함수들도 익스포트합니다. racket/kernel이 익스포트하는 함수 바인딩의 정확한 집합은 명시되지 않았으며 버전 간에 바뀔 수 있습니다.

(require racket/kernel/init) package: base

racket/kernel/init 라이브러리는 racket/kernel의 모든 것을 다시 제공합니다. 또한 #%top-interaction을 제공하는데, 이는 racket/kernel/initracket-I 명령줄 플래그와 함께 유용하게 만듭니다.

더 알아보기