docs packages download
  • Batteries included

    Racket’s extensive standard library gets your projects off the ground quickly.

  • Cross-platform

    Racket runs on Linux, macOS, and Windows. Develop on one; deploy to all three.

  • Powerful macros & languages

    Racket’s crown jewel is its macro system, which lets you freely extend the language.

  • Mature, stable, open source

    Racket is a mature Apache/MIT licensed project that’s actively developed and maintained.

  • DrRacket IDE & tons of documentation

    DrRacket is a graphical IDE that’s integrated with Racket’s vast documentation.

  • The best of Scheme and Lisp

    Racket started life as a Scheme implementation, but then grew into new areas.

  • Racket is a general-purpose programming language as well as the world’s first ecosystem for language-oriented programming. Make your dream language, or use one of the dozens already available, including these —

  • #lang racket[click for more]
    (require 2htdp/image) ; draw a picture
    (let sierpinski ([n 8])
    [(zero? n) (triangle 2 'solid 'red)]
    [else (define t (sierpinski (- n 1)))
    (freeze (above t (beside t t)))]))

    The 2htdp/image library provides easy-to-use functions for making images.

    Racket tutorial →

  • #lang scribble/base[click for more]
    @; Generate a PDF or HTML document
    @title{Bottles: @italic{Abridged}}
    (for/list ([n (in-range 100 0 -1)])
    @item{@(format "~a" n) bottles.}))

    The scribble/base language generates documents using a prose-friendly syntax.

    Scribble tutorial →

  • #lang typed/racket[click for more]
    ;; Using higher-order occurrence typing
    (define-type SrN (U String Number))
    (: tog ((Listof SrN) -> String))
    (define (tog l)
    (apply string-append (filter string? l)))
    (tog (list 5 "hello " 1/2 "world" (sqrt -1)))

    Typed Racket’s “gradual” typing lets you add types after you’ve been working in untyped mode.

    Typed Racket tutorial →

  • #lang datalog[click for more]
    ancestor(A, B) :- parent(A, B).
    ancestor(A, B) :-
    parent(A, C), ancestor(C, B).
    parent(john, douglas).
    parent(bob, john).
    ancestor(A, B)?

    You can use Racket to build other languages — like datalog, a logic-programming language.

    Datalog tutorial →

  • #lang racket/gui[click for more]
    (define f (new frame% [label "Guess"]))
    (define n (random 5)) (send f show #t)
    (define ((check i) btn evt)
    (message-box "." (if (= i n) "Yes" "No")))
    (for ([i (in-range 5)])
    (make-object button% (~a i) f (check i)))

    Racket’s GUI language and libraries makes cross-platform applications easy.

    GUI tutorial →

  • #lang web-server/insta[click for more]
    ;; A "hello world" web server
    (define (start request)
    (head (title "Racket"))
    (body "Hello World"))))

    The web-server/insta language lets you quickly prototype server-side web applications.

    Web-application tutorial →

  • Software
  • Download Racket v7.8

  • Source code

  • Bug reports

  • Nightly snapshot builds

  • Packages

  • Documentation & tutorials
  • Quick introduction

  • Systems programming

  • The Racket guide

  • The Racket reference

  • Web applications

  • All documentation

  • News
  • Racket version 7.8 is available.

  • Racketfest, a new Racket event, was held in Berlin on Thursday, February 27, 2020.

  • Racket School 2019 and ninth RacketCon were held in Salt Lake City in July 2019.

  • Racket t-shirts — the perfect way to meet friends, influence people, and stay warm.

  • Racket stickers — the indispensable accessory for laptops and textbooks.

  • Community
  • Mailing list and blog

  • #racket IRC on

  • Slack channel (visit this link to sign up)

  • Wiki

  • @racketlang on Twitter

  • Team

  • Software Freedom Conservancy

  • Friendly Environment policy

  • Donate to Racket
    Make a tax-deductible contribution to support our work.

  • Books
  • Realm of Racket
    Learn to program with Racket, one game at a time.

  • Beautiful Racket
    Make your own programming languages with Racket.

  • Server: Racket
    Develop a web application with Racket.

  • All Racket books

  • Education
  • How to Design Programs
    A principled approach to programming.

  • Program by Design
    A workshop to train teachers using How to Design Programs in the classroom.

  • Bootstrap
    A curriculum for middle-school students.

  • Thank you
  • To the NSF, DARPA, the Fund for the Improvement of Postsecondary Education (FIPSE) at the US Department of Education, the Exxon Foundation, CORD, partners of the Academy of Information Technology, Microsoft, Mozilla, and Google for their generous support over the years.