{"size": 2201, "ext": "scrbl", "max_stars_repo_path": "pkgs/racket-doc/scribblings/reference/kernel.scrbl", "max_stars_repo_name": "joshuafitzmorris/racket", "max_stars_repo_stars_event_min_datetime": "2018-07-05T21:18:24.000Z", "max_stars_repo_stars_event_max_datetime": "2021-06-04T14:48:37.000Z", "max_issues_repo_path": "pkgs/racket-doc/scribblings/reference/kernel.scrbl", "max_issues_repo_name": "joshuafitzmorris/racket", "max_issues_repo_issues_event_min_datetime": "2017-05-10T07:33:20.000Z", "max_issues_repo_issues_event_max_datetime": "2018-07-19T15:49:46.000Z", "max_forks_repo_path": "pkgs/racket-doc/scribblings/reference/kernel.scrbl", "max_forks_repo_name": "joshuafitzmorris/racket", "max_forks_repo_forks_event_min_datetime": "2016-04-25T11:47:57.000Z", "max_forks_repo_forks_event_max_datetime": "2017-05-09T14:52:48.000Z"}
{"max_stars_count": 4, "max_issues_count": 9, "max_forks_count": 3, "avg_line_length": 46.829787234, "max_line_length": 82, "alphanum_fraction": 0.7151294866}
#lang scribble/manual
@(require (for-label (except-in racket/base
                                lambda λ #%app #%module-begin)
                     (only-in racket/base
                              [#%plain-lambda lambda]
                              [#%plain-lambda λ]
                              [#%plain-app #%app]
                              [#%plain-module-begin #%module-begin])))

@title{Kernel Forms and Functions}

@defmodulelang[racket/kernel]{The @racketmodname[racket/kernel] library
is a @tech{cross-phase persistent} module that provides a minimal set of syntactic
forms and functions.}

``Minimal'' means that @racketmodname[racket/kernel] includes only
forms that are built into the Racket compiler and only functions that
are built into the run-time system. Currently, the set of bindings is
not especially small, nor is it particularly well-defined, since the
set of built-in functions can change frequently. Use
@racketmodname[racket/kernel] with care, and beware that its use can
create compatibility problems.

The @racket[racket/kernel] module exports all of the bindings in the
grammar of fully expanded programs (see @secref["fully-expanded"]),
but it provides @racket[#%plain-lambda] as @racket[lambda] and @racket[λ],
@racket[#%plain-app] as @racket[#%app], and
@racket[#%plain-module-begin] as @racket[#%module-begin]. Aside from
@racket[#%datum] (which expands to @racket[quote]),
@racketmodname[racket/kernel] provides no other syntactic bindings.

The @racket[racket/kernel] module also exports many of the function
bindings from @racketmodname[racket/base], and it exports a few other
functions that are not exported by @racketmodname[racket/base] because
@racketmodname[racket/base] exports improved variants. The exact set
of function bindings exported by @racket[racket/kernel] is unspecified
and subject to change across versions.


@section[#:style '(hidden toc-hidden)]{}

@defmodule[racket/kernel/init]{The @racketmodname[racket/kernel/init]
library re-provides all of @racketmodname[racket/kernel]. It also
provides @racket[#%top-interaction], which makes
@racketmodname[racket/kernel/init] useful with the @Flag{I}
command-line flag for @exec{racket}.}
