Racket is a general-purpose, object-oriented, multi-paradigm, functional, imperative, logic based programming language based on the Scheme dialect of Lisp. It’s designed to be a platform for programming language design and implementation.
Racket is also used to refer to the family of Racket programming languages and the set of tools supporting development on and with Racket. It has a powerful cross-platform GUI library built in.
Racket’s core language includes macros, modules, lexical closures, tail calls, delimited continuations, parameters (fluid variables), software contracts, green and OS threads, and more. The language also comes with primitives, such as eventspaces and custodians, which control resource management and enables the language to act like an operating system for loading and managing other programs.
Racket is often used for scripting, computer science education, and research. It’s an open-source project (Apache/MIT).
Here’s our recommended tutorials to learn Racket.
1. An Introduction to Racket with Pictures by Racket
This tutorial provides a brief introduction to the Racket programming language by using one of its picture-drawing libraries. Even if you don’t intend to use Racket for your artistic endeavors, the picture library supports interesting and enlightening examples. After all, a picture is worth five hundred “hello world”s.
2. The Racket Guide by Matthew Flatt, Robert Bruce Findler and PLT
This guide is intended for programmers who are new to Racket or new to some part of Racket. It assumes programming experience.
3. Learn Racket in Y minutes by th3rac25 and contributors
This document offers a whirlwind tour of Racket.
4. Systems Programming with Racket by Matthew Flatt
Underneath the graphical facade of DrRacket lies a sophisticated toolbox for managing threads and processes, which is the subject of this tutorial.
5. Racket Tutorials by Matthew Butterick
This is a series of 11 tutorials that offer useful information about functional programming, macros, and more.
6. Web Applications in Racket by Danny Yoo, Jay McCarthy
How do we make dynamic web applications? In this tutorial, the authors show how to use Racket to achieve this goal. They explain how to start up a web server, how to generate dynamic web content, and how to interact with the user. Their working example is a simple web journal — a “blog.”
7. Teach Yourself Racket by Prabhakar Ragde
This document offers a quick, shallow, and incomplete introduction to the language for mature programmers with experience in an imperative language (C, C++, Java, Python, etc.)
All tutorials in this series:
|Free Programming Tutorials|
|Java||General-purpose, concurrent, class-based, object-oriented, high-level language|
|C||General-purpose, procedural, portable, high-level language|
|Python||General-purpose, structured, powerful language|
|C++||General-purpose, portable, free-form, multi-paradigm language|
|C#||Combines the power and flexibility of C++ with the simplicity of Visual Basic|
|PHP||PHP has been at the helm of the web for many years|
|Ruby||General purpose, scripting, structured, flexible, fully object-oriented language|
|Assembly||As close to writing machine code without writing in pure hexadecimal|
|Swift||Powerful and intuitive general-purpose programming language|
|Groovy||Powerful, optionally typed and dynamic language|
|Go||Compiled, statically typed programming language|
|Pascal||Imperative and procedural language designed in the late 1960s|
|Perl||High-level, general-purpose, interpreted, scripting, dynamic language|
|R||De facto standard among statisticians and data analysts|
|COBOL||Common Business-Oriented Language|
|Scala||Modern, object-functional, multi-paradigm, Java-based language|
|Fortran||The first high-level language, using the first compiler|
|Scratch||Visual programming language designed for 8-16 year-old children|
|Lua||Designed as an embeddable scripting language|
|Logo||Dialect of Lisp that features interactivity, modularity, extensibility|
|Rust||Ideal for systems, embedded, and other performance critical code|
|Lisp||Unique features - excellent to study programming constructs|
|Ada||ALGOL-like programming language, extended from Pascal and others|
|Haskell||Standardized, general-purpose, polymorphically, statically typed language|
|Scheme||General-purpose, functional, language descended from Lisp and Algol|
|Prolog||General purpose, declarative, logic programming language|
|Forth||Imperative stack-based programming language|
|Clojure||Dialect of the Lisp programming language|
|Julia||High-level, high-performance language for technical computing|
|SQL||Access and manipulate data held in a relational database management system|
|Erlang||General-purpose, concurrent, declarative, functional language|
|VimL||Powerful scripting language of the Vim editor|
|OCaml||General-purpose, powerful, high-level language|
|Awk||Versatile language designed for pattern scanning and processing|
|Racket||Platform for programming language design and implementation|
|BASIC||Family of general-purpose, high-level programming languages|
|LaTeX||Professional document preparation system and document markup language|
|Elixir||Relatively new functional language that runs on the Erlang virtual machine|
|Dart||Client-optimized programming language for fast apps|
|ABAP||Advanced Business Application Programming|
|F#||General purpose, strongly typed, multi-paradigm language. Part of ML|
|Chapel||Parallel-programming language in development at Cray Inc.|
|Dylan||Multi-paradigm language, supports functional & object-oriented programming|
|D||General-purpose systems programming language with a C-like syntax|
|Solidity||Object-oriented, high-level language for implementing smart contracts|
|XML||Set of rules for defining semantic tags that describe the structure and meaning|
|Vala||Object-oriented language with a self-hosting compiler that generates C code|
|ECMAScript||Best known as the language embedded in web browsers|
|Kotlin||Statically typed, general-purpose programming language with type inference|
|Markdown||Plain text formatting syntax designed to be easy-to-read and easy-to-write|
|Pike||Interpreted, general-purpose, high-level, cross-platform, dynamic language|
|HTML||HyperText Markup Language|
|Factor||Dynamic stack-based language|
|Objective-C||General purpose language which is a superset of C|
|Standard ML||One of the two main dialects of the ML language|
|Alice||Educational language with an integrated development environment|
|Agda||Dependently typed functional language based on intuitionistic type theory|
|Icon||High-level, general-purpose language|
|PureScript||Small strongly, statically typed language with expressive types|
|Tcl||Dynamic language based on concepts of Lisp, C, and Unix shells|