3 What can be rewritten🔗ℹ

The engine recognizes standard headers for Beginning Student Language (BSL), BSL with list abbreviations, Intermediate Student Language (ISL), ISL with lambda, Advanced Student Language, racket, and racket/base. When there is no #lang header, DrRacket’s selected language is used. Custom teaching languages can therefore be recognized by their selected language name, but their private forms are not assumed to have ordinary Racket semantics.

Only recognized top-level function definitions whose bodies use the supported expression subset are candidates for structural rewriting. The current rules include conditionals, short-circuit Boolean forms, redundant equivalent wrappers, exact-integer arithmetic rewrites, and forwarding helpers. They avoid rewriting quoted data. A function can be skipped when a primitive is shadowed, its bindings cannot be resolved conservatively, it uses an unsupported form, or its signature or recursion pattern makes helper extraction unsafe.

Other top-level material—including data definitions, structures, signatures, templates, teachpack forms, and test forms—is retained. Exact integer literals in eligible teaching-language source may be printed with a different radix; the numeric value is unchanged. Unknown macros and unfamiliar teaching-language forms are not expanded or interpreted by the tool.