A newly published programming tutorial offers a beginner-oriented introduction to Racket, using the language to explain the structure and history of Lisp as well as its approach to creating new syntax. The guide starts with the Racket development environment and builds toward writing a custom looping construct.
The tutorial places Racket within a lineage beginning with Lisp, created by John McCarthy at MIT in 1958. It describes Lisp as the second-oldest high-level programming language still in use after Fortran, and notes its long association with artificial-intelligence research. The account then follows the family through Scheme, created by Gerald Sussman and Guy Steele in 1975, and PLT Scheme, developed by Matthias Felleisen's group in 1995. PLT Scheme was renamed Racket in 2010.
Racket is presented not simply as another Scheme implementation but as a system for language-oriented programming. A program begins by declaring the language it uses, while the bundled DrRacket environment provides a definitions area and a read-evaluate-print loop for experimentation. Terminal users can work through the `racket` command and use `raco` for packages and tooling.
The guide introduces Lisp's prefix expression form, where an operator and its arguments appear inside parentheses. It covers anonymous functions, lists, higher-order functions such as `map`, `filter` and `foldl`, and recursive problem solving. A graphics example uses Racket libraries to draw a Sierpinski triangle, connecting the language's abstract features with visible output.
Its final theme is homoiconicity: programs are represented using the same list structures that code manipulates as data. Quoting prevents an expression from being immediately evaluated, enabling a program to construct or transform another program. Racket's macro facilities then operate on that structured code before execution.
To demonstrate the idea, the tutorial creates a `while` form rather than treating the absence of a built-in loop with that syntax as a fixed restriction. The example is meant to show how a programmer can extend the language around a problem instead of only composing functions already supplied by the core.
The article is an educational guide, not a new Racket release or benchmark. Its contribution is a staged path through a programming tradition whose parentheses can appear unfamiliar to newcomers. By ending with user-defined syntax, it frames Racket's main attraction as the ability to move from writing programs in a language to designing a small language for the task at hand.
The guide also emphasizes that Racket can host more than one language through its initial language declaration. That detail supports the tutorial's progression: readers first learn a compact expression model, then see the surrounding environment as a framework in which alternative syntaxes and domain-specific conventions can be defined.



