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 LGPL 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 developing and deploying new languages. 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])
    (cond
    [(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}}
    @(apply
    itemlist
    (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)
    (response/xexpr
    '(html
    (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 v6.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 6.8 is available.

  • (seventh RacketCon) will be held in Seattle on October 7, 2017, followed by Racketeer Office Hours on October 8.

  • Community
  • Mailing list

  • Blog

  • #racket IRC on freenode.net

  • @racketlang on Twitter

  • PLT: the team behind Racket

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

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

  • Programming Languages:
    Application and Interpretation

    For undergraduates, graduate students, and experts.

  • Semantics Engineering
    with PLT Redex

    Semantics automation for language engineers.

  • Education
  • 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.