turnstile.scrbl (1284B)
1 #lang scribble/manual 2 3 @(require (for-label racket/base)) 4 5 @title[#:style '(toc)]{The @racketmodname[turnstile] language} 6 7 @defmodule[turnstile #:lang #:use-sources (turnstile/turnstile)] 8 9 @(author 10 (author+email "Stephen Chang" "stchang@racket-lang.org" #:obfuscate? #t) 11 (author+email "Alex Knauth" "alexander@knauth.org" #:obfuscate? #t) 12 (author+email "Ben Greenman" "types@ccs.neu.edu" #:obfuscate? #t)) 13 14 Turnstile aims to help Racket programmers create typed languages. It does so 15 with extensions of Racket's macro-definition forms that facilitate 16 implementation of type rules alongside normal macro code. As a result, the 17 macros implementing a new language directly type check the program during 18 expansion, obviating the need to create and call out to a separate type checker. 19 Thus, a complete typed language implementation remains a series of macro 20 definitions that may be imported and exported in the standard way that Racket 21 programmers are accustomed to. 22 23 @local-table-of-contents[] 24 25 @include-section{guide.scrbl} 26 @include-section{reference.scrbl} 27 28 @(bibliography 29 (bib-entry #:key "bidirectional" 30 #:author "Benjamin C. Pierce and David N. Turner" 31 #:title "Local Type Inference" 32 #:location "POPL" 33 #:date "1998") 34 )