Expand TR reference section on libraries

This commit is contained in:
Asumu Takikawa 2013-09-16 16:17:02 -04:00
parent dd1f3364a4
commit f5b82eb510

View File

@ -32,10 +32,6 @@ Such libraries include @racketmodname[srfi/14],
(string->char-set "olleh")) (string->char-set "olleh"))
] ]
To participate in making more libraries available, please visit
@link["http://www.ccs.neu.edu/home/samth/adapt/"]{here}.
Other libraries can be used with Typed Racket via Other libraries can be used with Typed Racket via
@racket[require/typed]. @racket[require/typed].
@ -44,3 +40,67 @@ Other libraries can be used with Typed Racket via
[check-version (-> (U Symbol (Listof Any)))]) [check-version (-> (U Symbol (Listof Any)))])
(check-version) (check-version)
] ]
The following libraries are included with Typed Racket in the
@racketfont{typed} collection:
@;; framework and mred left out until support for classes
@;; is more complete
@defmodule[typed/file]
@defmodule[typed/net/base64]
@defmodule[typed/net/cgi]
@defmodule[typed/net/cookie]
@defmodule[typed/net/dns]
@defmodule[typed/net/ftp]
@defmodule[typed/net/gifwrite]
@defmodule[typed/net/head]
@defmodule[typed/net/imap]
@defmodule[typed/net/mime]
@defmodule[typed/net/nntp]
@defmodule[typed/net/pop3]
@defmodule[typed/net/qp]
@defmodule[typed/net/sendmail]
@defmodule[typed/net/sendurl]
@defmodule[typed/net/smtp]
@defmodule[typed/net/uri-codec]
@defmodule[typed/net/url]
@defmodule[typed/rackunit]
@defmodule[typed/srfi/14]
Other libraries included in the main distribution that are either
written in Typed Racket or have adapter modules that are typed:
@defmodule[math #:no-declare #:link-target? #f]
@defmodule[plot/typed #:no-declare #:link-target? #f]
@section{Porting Untyped Modules to Typed Racket}
To adapt a Racket library not included with Typed Racket, the
following steps are required:
@itemlist[
@item{Determine the data manipulated by the library, and how it will
be represented in Typed Racket.}
@item{Specify that data in Typed Racket, using @racket[require/typed]
and @racket[#:opaque] and/or @racket[#:struct].}
@item{Use the data types to import the various functions and constants
of the library.}
@item{Provide all the relevant identifiers from the new adapter module.}
]
For example, the following module adapts the untyped
@racketmodname[racket/bool] library:
@racketmod[typed/racket
(require/typed racket/bool
[true Boolean]
[false Boolean]
[symbol=? (Symbol Symbol -> Boolean)]
[boolean=? (Boolean Boolean -> Boolean)]
[false? (Any -> Boolean)])
(provide true false symbol=? boolean=? false?)
]
More substantial examples are available in the @racketfont{typed}
collection.