From ca6836b91a26ab232d80cdc0c286e4cc5b77d394 Mon Sep 17 00:00:00 2001 From: Syntacticlosure <1227847322@qq.com> Date: Wed, 10 May 2017 08:07:36 +0800 Subject: [PATCH 1/2] Delete quick.scrbl --- .../scribblings/guide/quick.scrbl | 56 ------------------- 1 file changed, 56 deletions(-) delete mode 100644 typed-racket-doc/typed-racket/scribblings/guide/quick.scrbl diff --git a/typed-racket-doc/typed-racket/scribblings/guide/quick.scrbl b/typed-racket-doc/typed-racket/scribblings/guide/quick.scrbl deleted file mode 100644 index c85a05f92..000000000 --- a/typed-racket-doc/typed-racket/scribblings/guide/quick.scrbl +++ /dev/null @@ -1,56 +0,0 @@ -#lang scribble/manual - -@(require "../utils.rkt" (for-label (only-meta-in 0 typed/racket))) -@(provide typed-mod) - -@title[#:tag "quick"]{Quick Start} - -Given a module written in the @racketmodname[racket] language, using -Typed Racket requires the following steps: - -@itemize[#:style - 'ordered - @item{Change the language to @racketmodname[typed/racket].} - @item{Change the uses of @racket[(require mod)] to - @racket[(require typed/mod)].} - @item{Annotate structure definitions and top-level - definitions with their types.} ] - -Then, when the program is run, it will automatically be typechecked -before any execution, and any type errors will be reported. If there -are any type errors, the program will not run. - -Here is an example program, written in the @racketmodname[racket] -language: - -@(define typed-mod -@racketmod[ -typed/racket -(struct pt ([x : Real] [y : Real])) - -(: distance (-> pt pt Real)) -(define (distance p1 p2) - (sqrt (+ (sqr (- (pt-x p2) (pt-x p1))) - (sqr (- (pt-y p2) (pt-y p1)))))) -] -) - -@racketmod[ -racket -(struct pt (x y)) - -(code:contract distance : pt pt -> real) -(define (distance p1 p2) - (sqrt (+ (sqr (- (pt-x p2) (pt-x p1))) - (sqr (- (pt-y p2) (pt-y p1)))))) -] - -Here is the same program, in @racketmodname[typed/racket]: - -@|typed-mod| - -@section{Using Typed Racket from the Racket REPL} - -It is possible to use Typed Racket from the Racket REPL. To do so, start Racket -with the following command line: -@commandline{racket -I typed/racket} From 2bb26fced2c9c543c7f0f1696db769374dfae5df Mon Sep 17 00:00:00 2001 From: Syntacticlosure <1227847322@qq.com> Date: Wed, 10 May 2017 08:24:33 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E4=BA=86ts-guide?= =?UTF-8?q?=E7=9A=84quick=20start?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scribblings/guide/quick.scrbl | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 typed-racket-doc/typed-racket/scribblings/guide/quick.scrbl diff --git a/typed-racket-doc/typed-racket/scribblings/guide/quick.scrbl b/typed-racket-doc/typed-racket/scribblings/guide/quick.scrbl new file mode 100644 index 000000000..01145a792 --- /dev/null +++ b/typed-racket-doc/typed-racket/scribblings/guide/quick.scrbl @@ -0,0 +1,53 @@ +#lang scribble/manual + +@(require "../utils.rkt" (for-label (only-meta-in 0 typed/racket))) +@(provide typed-mod) + +@title[#:tag "quick"]{快速开始typed-racket} + +在 @racketmodname[racket] 中的模块使用typed racket, 遵循以下的步骤: + +@itemize[#:style + 'ordered + @item{将language修改为 @racketmodname[typed/racket].} + @item{将 @racket[(require mod)] 改为 + @racket[(require typed/mod)].} + @item{给结构和顶层定义加上类型签名} ] + +然后,程序执行前就会自动检查它的类型,如果发生任何类型错误,则报告错误, +停止执行。 + + +这是一个 @racketmodname[racket] 中的例子: + +@(define typed-mod +@racketmod[ +typed/racket +(struct pt ([x : Real] [y : Real])) + +(: distance (-> pt pt Real)) +(define (distance p1 p2) + (sqrt (+ (sqr (- (pt-x p2) (pt-x p1))) + (sqr (- (pt-y p2) (pt-y p1)))))) +] +) + +@racketmod[ +racket +(struct pt (x y)) + +(code:contract distance : pt pt -> real) +(define (distance p1 p2) + (sqrt (+ (sqr (- (pt-x p2) (pt-x p1))) + (sqr (- (pt-y p2) (pt-y p1)))))) +] + +这是相同的用 @racketmodname[typed/racket] 写的例子: + +@|typed-mod| + +@section{在Racket REPL中使用typed racket} + +我们可以在在Racket REPL中使用Typed Racket,只要在开启racket时 +使用如下命令行: +@commandline{racket -I typed/racket}