18.8 Kernel Forms and Functions

► |  | The Racket Reference

1 | Language Model
2 | Notation for Documentation
3 | Syntactic Forms
4 | Datatypes
5 | Structures
6 | Classes and Objects
7 | Units
8 | Contracts
9 | Pattern Matching
10 | Control Flow
11 | Concurrency and Parallelism
12 | Macros
13 | Input and Output
14 | Reflection and Security
15 | Operating System
16 | Memory Management
17 | Unsafe Operations
18 | Running Racket
| Bibliography
| Index

▼ | 18 | Running Racket

18.1 | Running Racket or GRacket
18.2 | Libraries and Collections
18.3 | Interactive Help
18.4 | Interaction Configuration
18.5 | Interactive Module Loading
18.6 | Debugging
18.7 | Controlling and Inspecting Compilation
18.8 | Kernel Forms and Functions

• | 18.8 | Kernel Forms and Functions

9.3
Racket
top contents ← prev up next →

### 18.8 Kernel Forms and Functions🔗ℹ

#lang racket/kernel | package: base

The racket/kernel library is a cross-phase persistent module that provides a minimal set of syntactic forms and functions.

“Minimal” means that 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 racket/kernel with care, and beware that its use can create compatibility problems.

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

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

(require racket/kernel/init) | package: base

The racket/kernel/init library re-provides all of racket/kernel. It also provides #%top-interaction, which makes racket/kernel/init useful with the -I command-line flag for racket.
top contents ← prev up next →