# Introduction to Racket: The Modern Face of Lisp

Discover Racket, the education-focused language from the Lisp family dating back to 1958

- **Source:** [Hacker News: Front Page](https://brifing.si/source/b07aa772-b1a0-4a76-aa18-719c6f9e2dde)
- **Published:** 2026-08-22
- **Topic:** [Software & Engineering](https://brifing.si/c/engineering)
- **Original article:** <https://geometridae.bearblog.dev/a-friendly-introduction-to-racket/>
- **On Brifing:** https://brifing.si/s/ab4afac1-0f0a-4ab4-97ce-46c0cf4929ac

## Lisp's Historical Legacy

Developed by John McCarthy at MIT in 1958, Lisp is the second oldest high-level programming language after Fortran. It became the primary language for AI research in the 1970s, with companies like Symbolics producing dedicated Lisp machines. Although its popularity declined during the AI winter of the 1990s, derivatives like Scheme and Racket kept its legacy alive. Even today, Lisp references appear in popular media like The Amazing Digital Circus.

## Racket's Academic Roots

Scheme, developed in 1975 by Gerald Sussman and Guy Steele, became academia's preferred minimalist Lisp variant. In 1995, Matthias Felleisen's PLT group created PLT Scheme for educational purposes. Renamed Racket in 2010, it evolved beyond being just a Scheme implementation into what's now called a 'language-oriented programming language.' MIT's famous SICP textbook was originally written using Scheme.

## Language-Oriented Programming

Racket's core philosophy revolves around creating domain-specific languages (DSLs). The #lang directive lets you choose which language to use - Racket itself ships with over 50 sublanguages. This approach enables using different syntaxes for different tasks, like having separate syntax for HTML templates versus business logic in web development.

## Simple Syntax, Profound Implications

The Lisp family follows one consistent rule: (function argument1 argument2). For example, (+ 1 2) performs addition while (if condition then else) handles conditional logic. What appears as parenthesis overload actually demonstrates complete syntactic consistency. In DrRacket, you can immediately test functions in the REPL - calling (circle-area 2) calculates πr².

## Functional Programming Tools

Racket provides powerful list operations through map, filter, and foldl functions. (map (λ(x) (* x x)) '(1 2 3)) squares each list element. Anonymous functions use the lambda keyword - a concept dating back to Church's lambda calculus from the 1930s. Passing functions as arguments to other functions forms a natural pattern in Racket.

## Homoiconicity and Macros

In Lisp, code and data share the same representation (homoiconicity). The quote symbol ' prevents evaluation, keeping code as data that can later be executed with eval. This enables true macros - unlike C preprocessor macros, Racket macros can manipulate the abstract syntax tree (AST) directly.

## Visual Programming Example

Racket supports graphical programming through its 2htdp/image library. As demonstrated by the Sierpinski triangle example, recursive functions can generate complex shapes. Calling (sierpinski 6) draws a 6-level fractal triangle. The language's educational design helps concretize abstract mathematical concepts.

## Why Learn Racket?

Racket serves as an ideal tool for understanding fundamental programming concepts. It carries the pedagogical legacy of classics like SICP and provides an excellent starting point for advanced topics like language design and compiler development. As Alan Kay noted, the Lisp family represents 'the Maxwell's equations of software' - everything derivable from a minimal core.

## Sources covering this story

- https://geometridae.bearblog.dev/a-friendly-introduction-to-racket/ — 

---

_Summary written by Brifing from the original reporting. Copyright in the original article belongs to its publisher; read the full piece at the link above._
