Racket: A programmable programming language

Racket is a wide-spectrum programming language that inherits from Lisp and Scheme but also provides dialects that support objects, types, laziness and many other paradigms. Racket's module system allows programmers to write components in different dialects and link them together. Racket's libraries extend from web servers to databases to distributed computing to charting.

Start Quickly

Draw more pictures or build a web server from scratch. Racket includes both batteries and a programming environment, so get started!

Go Further

Grow your Program

Racket's interactive mode encourages experimentation, and quick scripts easily compose into larger systems. Small scripts and large systems both benefit from native-code JIT compilation. When a system gets too big to keep in your head, you can add static types.

Grow your Language

Extend Racket whenever you need to. Mold it to better suit your tasks without sacrificing interoperability with existing libraries and without having to modify the tool chain. When less is more, you can remove parts of a language or start over and build a new one.

Grow your Skills

Whether you're just starting out, want to know more about programming language applications or models, looking to expand your horizons, or ready to dive into research, Racket can help you become a better programmer and system builder.

Documentation

For getting started
More: Systems Programming with Racket dives much deeper and much faster, showing how to build a complete continuation-based web server.
Guide: Racket starts with a tutorial on Racket basics, and then it describes the rest of the Racket language.
For experienced Racketeers
Reference: Racket provides comprehensive coverage of all of Racket.
Continue: Web Applications in Racket describes how to use the Racket web server to build dynamic web applications.
Package Management explains how to install packages, and how to build and distribute your own.

Learning

How to Design Programs

A principled approach to designing programs

  • DrRacket + teaching languages
  • For the programming novice

Realm of Racket

Learn Racket, one game at a time

  • See the realm package
  • For the Racket beginner

PLAI

Foundations of Programming langauges

  • Understand the features that make languages tick
  • For undergraduates, graduate students, and experts

Community

News

Blog — announcements, helpful hints, and thoughtful rants.

Twitter — short bits of Racket news.

Discussion

Mailing lists — discussion for using and developing Racket.

IRC — Chat in the #racket channel on freenode.net — an informal discussion channel for all things related to Racket. (Browse the logs.)

Contributing

Code — the Racket source code on GitHub.

Wiki — Useful pages include Intro Projects and Videos, including tutorials, interviews, and more.

Snapshot builds — The freshest versions of Racket.

Bug reports — File, query and maybe fix existing reports.