# Racket

> functional and contractual programming language, with strong, dynamic and reflective typing, derived from Scheme

**Wikidata**: [Q1254148](https://www.wikidata.org/wiki/Q1254148)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Racket_(programming_language))  
**Source**: https://4ort.xyz/entity/racket

## Summary
Racket is a multi-paradigm programming language derived from Scheme, known for its strong, dynamic, and reflective typing. It supports functional, procedural, and object-based programming while emphasizing contractual programming and modularity. Developed by Matthias Felleisen and others, Racket is notable for its educational focus and powerful tooling, including the DrRacket IDE.

## Key Facts
- **Derived from Scheme**: Racket is a descendant of the Scheme programming language, inheriting its functional programming principles.
- **Multi-paradigm**: Supports functional, procedural, object-based, and modular programming paradigms.
- **Strong, dynamic typing**: Combines strong typing with dynamic typing, allowing flexibility while maintaining type safety.
- **Reflective**: Features reflective programming capabilities, enabling introspection and modification of the language's behavior.
- **Developed by Matthias Felleisen**: The language was created by American computer scientist Matthias Felleisen and others.
- **First release**: Inception in 1995, with a name change to "Racket" in 2010.
- **Current version**: Latest stable version is 8.16 (as of 2025).
- **Licensing**: Uses a multi-licensing model, including Apache Software License 2.0 and MIT License.
- **File extensions**: Supports `.rkt`, `.rktl`, `.rktd`, `.plt`, `.ss`, and `.scm`.
- **IDE**: DrRacket, an integrated development environment, is the primary tool for writing and running Racket code.

## FAQs
### Q: What is Racket used for?
A: Racket is used for educational purposes, research, and general-purpose programming. Its strong typing and reflective capabilities make it suitable for teaching programming concepts and building domain-specific languages.

### Q: How does Racket differ from Scheme?
A: While Racket is derived from Scheme, it extends the language with additional features like contractual programming, modularity, and a more comprehensive standard library. Racket also includes the DrRacket IDE, which is not part of standard Scheme implementations.

### Q: Is Racket open-source?
A: Yes, Racket is open-source and available under a multi-licensing model, including the Apache Software License 2.0 and MIT License.

### Q: What is DrRacket?
A: DrRacket is the official integrated development environment (IDE) for Racket, designed to simplify the learning and use of the language. It provides features like syntax highlighting, debugging, and a REPL.

### Q: Can Racket be used for web development?
A: Yes, Racket can be used for web development through frameworks like Web Server Racket, which allows for building web applications with ease.

## Why It Matters
Racket stands out in the programming language landscape for its educational focus and practical applications. Developed by Matthias Felleisen and others, it emphasizes contractual programming, which helps ensure program correctness through explicit contracts. This approach makes Racket particularly valuable in teaching programming principles, as it encourages students to think about program correctness from the outset. The language's strong typing and reflective capabilities also make it a powerful tool for research and development. Additionally, Racket's modularity and support for multiple programming paradigms allow developers to tailor the language to their specific needs. Its open-source nature and multi-licensing model further contribute to its accessibility and adaptability. Overall, Racket plays a significant role in both academic and professional programming environments, offering a robust and flexible platform for a wide range of applications.

## Notable For
- **Educational focus**: Racket is designed with teaching in mind, making it a popular choice for introductory programming courses.
- **Contractual programming**: Emphasizes program correctness through explicit contracts, setting it apart from other languages.
- **DrRacket IDE**: The official IDE is highly regarded for its user-friendly interface and powerful features.
- **Multi-paradigm support**: Combines functional, procedural, and object-based programming in a single language.
- **Strong typing**: Maintains type safety while allowing dynamic typing, balancing flexibility and robustness.

## Body
### Origins and Development
Racket was developed by Matthias Felleisen and others, with its origins tracing back to the Scheme programming language. The name "Racket" was adopted in 2010, replacing the earlier name "PLT Scheme." The language's inception in 1995 marked the beginning of its evolution into a versatile and educational-focused programming tool.

### Language Features
Racket supports multiple programming paradigms, including functional, procedural, and object-based programming. Its strong, dynamic typing ensures type safety while allowing flexibility in program design. The language's reflective capabilities enable introspection and modification of its behavior, making it a powerful tool for both teaching and research.

### Tooling and IDE
DrRacket, the official integrated development environment (IDE) for Racket, is a key feature of the language. It provides a user-friendly interface with syntax highlighting, debugging tools, and a REPL, making it accessible for both beginners and experienced programmers. The IDE is designed to support the language's educational focus and practical applications.

### Licensing and Availability
Racket is open-source and available under a multi-licensing model, including the Apache Software License 2.0 and MIT License. This approach ensures that the language remains accessible to a wide range of users while allowing for flexibility in its use.

### File Extensions
Racket supports several file extensions, including `.rkt`, `.rktl`, `.rktd`, `.plt`, `.ss`, and `.scm`. These extensions are used to denote different types of Racket files, such as modules, libraries, and scripts.

### Versions and Updates
Racket has seen numerous updates since its inception. The latest stable version is 8.16, released in 2025. Each version includes new features, improvements, and bug fixes, ensuring that the language remains a robust and versatile tool for programming.

### Community and Support
Racket has a dedicated community of users and developers who contribute to its ongoing development. The language's official website, GitHub repository, and social media channels provide resources and support for users. Additionally, the language's open-source nature encourages collaboration and innovation.

```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "Racket",
  "description": "Functional and contractual programming language with strong, dynamic, and reflective typing, derived from Scheme.",
  "url": "https://racket-lang.org/",
  "sameAs": ["https://www.wikidata.org/wiki/Q187560", "https://en.wikipedia.org/wiki/Racket_(programming_language)"],
  "additionalType": "ProgrammingLanguage"
}

## References

1. [Programming Languages Software Award](https://www.sigplan.org/Awards/Software/#2018_Racket)
2. [Source](https://github.com/JohnMarkOckerbloom/ftl/blob/master/data/wikimap)
3. [Source](https://blog.racket-lang.org/2019/11/completing-racket-s-relicensing-effort.html)
4. [Source](https://blog.racket-lang.org/2023/02/racket-v8-8.html)
5. [Source](https://blog.racket-lang.org/2023/05/racket-v8-9.html)
6. [Source](https://blog.racket-lang.org/2023/08/racket-v8-10.html)
7. [Source](https://blog.racket-lang.org/2023/11/racket-v8-11.html)
8. [Racket v8.12](https://blog.racket-lang.org/2024/02/racket-v8-12.html)
9. [Racket v8.13](https://blog.racket-lang.org/2024/05/racket-v8-13.html)
10. [Racket v8.14](https://blog.racket-lang.org/2024/08/racket-v8-14.html)
11. [Racket v8.15](https://blog.racket-lang.org/2024/11/racket-v8-15.html)
12. [Racket v8.16](https://blog.racket-lang.org/2025/03/racket-v8-16.html)
13. [Racket v8.17](https://blog.racket-lang.org/2025/05/racket-v8-17.html)
14. [Racket v8.18](https://blog.racket-lang.org/2025/08/racket-v8-18.html)
15. [Racket v9.0](https://blog.racket-lang.org/2025/11/racket-v9-0.html)
16. Integrated Authority File
17. [Racket. 2010](https://blog.racket-lang.org/2010/06/racket.html)
18. YouTube API
19. National Library of Israel
20. [Source](https://www.reddit.com/r/Racket/)
21. [OpenAlex](https://docs.openalex.org/download-snapshot/snapshot-data-format)