Racket is a general-purpose programming language in the Lisp/Scheme family and an ecosystem for language-oriented programming.
This repository contains the source code for the core Racket system and some related packages.
Other parts of the Racket distribution are maintained in separate repositories under the Racket GitHub organization.
- What is Racket?
- Install
- Building from Source
- Documentation
- Example Code
- Contributing
- Community
- License
Racket is a mature, functional-first language with support for multiple paradigms and a focus on language creation.
- Supports functional, imperative, object-oriented, and logic programming
- Language-oriented: create new syntaxes and DSLs with powerful macros
- Comes with DrRacket, a beginner-friendly IDE
- Used in education, research, and production
- Includes a package ecosystem, module system, and REPL
For detailed instructions, see the Build Guide
Prebuilt binaries for major platforms are available at:
Note: Prebuilt packages are available for most operating systems.
To build Racket from this repository:
- This repository is intended for Racket development or contributions.
- Follow the instructions in the Build Guide
git clone https://github.com/racket/racket
cd racket
make
Note: For detailed instructions, see the Build Guide.
- ※ To build the released version of Racket from source tarballs, visit https://download.racket-lang.org.
- Official Documentation
- Tutorials and Guides
- Racket Package Index (pkgs.racket-lang.org)
- How to Design Programs (HTDP)
#lang racket
(define-syntax-rule (factorial n)
(let loop ([i n] [acc 1])
(if (<= i 1)
acc
(loop (sub1 i) (* acc i)))))
(factorial 5)
; => 120
For more Racket examples, visit the Official Racket Examples page
We welcome contributions of all kinds, including code, documentation, and issue reports.
- Fork this repository and open a pull request.
- Follow the instructions in the Build Guide.
- Look for good first issues.
By contributing, you agree to license your work under the following licenses:
See the LICENSE.txt file and the LICENSE files in racket/src/
for more information.
Please read our Friendly Environment Policy to ensure respectful and inclusive communication.
Stay connected with the Racket community:
- Discourse Forum
- Discourse Chat
- Discord Server—the '#internals' channel is used for discussions about the Racket implementation
This project is distributed under the following licenses:
See the LICENSE.txt file for general information.