beautifulracket.com Open in urlscan Pro
198.199.109.238  Public Scan

Submitted URL: http://beautifulracket.com/
Effective URL: https://beautifulracket.com/
Submission: On April 01 via api from GB — Scanned from GB

Form analysis 1 forms found in the DOM

POST https://tinyletter.com/beautifulracket

<form action="https://tinyletter.com/beautifulracket" class="signup" method="post" onsubmit="window.open('https://tinyletter.com/beautifulracket', 'popupwindow', 'scrollbars=yes,width=800,height=600');return true" style="margin-top:2rem"
  target="popupwindow">
  <style type="text/css">
    form.signup input {
      font-size: 90%;
    }

    .signup {
      opacity: 0.5;
    }

    .signup:hover {
      opacity: 1;
    }
  </style>
  <div style="display:flex">
    <input id="tlemail" name="email" onfocus="clear_email_signup_field(this);" style="width:80%" type="input" value="Enter your email to be notified about new chapters">
    <input style="width:20%" type="submit" value="subscribe">
    <input name="embed" type="hidden" value="1">
  </div>
</form>

Text Content

Thank you for your comment
Beau­tiful Racket
an intro­duc­tion to language-oriented
program­ming using Racket
by Matthew Butt­erick · version 1.6



START

 * Fore­word by Matthew Flatt
 * Intro­duc­tion
 * Setup
 * Acknowl­edg­ments
 * About the author
 * Legal


THIS BOOK IS NOT FREE

 * How to pay for this book
 * Why you should pay


TUTORIALS

 * Make a language in one hour: stacker
 * Learn some func­tional program­ming: funstacker
 * Dive deeper into macros: stackerizer
 * Follow the grammar: bf
 * Extend a data format: jsonic
 * Level up: jsonic revis­ited
 * Finishing moves: jsonic
 * Imagine a language: wires
 * Go with the flow: basic
 * Into the rapids: more basic
 * Closing the loop: basic


EXPLAINERS

 * Booleans & condi­tionals
 * Contin­u­a­tions
 * Contracts
 * Data struc­tures
 * Equality
 * Errors & excep­tions
 * Eval­u­a­tion
 * Func­tions
 * Hygiene
 * Iden­ti­fiers
 * Importing & exporting
 * Inter­po­si­tion points
 * The #lang line
 * Lists
 * Loops
 * Macros
 * Modules
 * Numbers
 * Pairs
 * Para­me­ters
 * Recur­sion
 * The REPL
 * String­like types
 * Syntax objects
 * Syntax patterns
 * Unit testing


APPENDIX

 * Master recipe
 * Glos­sary
 * From br to racket/base
 * Resources
 * Domain-specific languages
 * The making of Beau­tiful Racket
 * Why Racket? Why Lisp?
 * Why language-oriented program­ming? Why Racket?
 * Thoughts on Rhombus (formerly known as Racket2)
 * Why I no longer contribute to Racket
 * Thoughts on Racket & Chez Scheme


next →