On this page:
GIF-Stream
GIF-Colormap
JSExpr
Cookie
FTP-Connection
HTTP-Connection
IMAP-Connection
Path/  Param
URL
URL-Exception
Port  T
Port  T/  Bytes
SSL-Protocol
SSL-Server-Context
SSL-Client-Context
SSL-Context
SSL-Listener
SSL-Verify-Source
Char-Set
Cursor
Time
Date
3.1 Porting Untyped Modules to Typed Racket
6.3.90.900

3 Libraries Provided With Typed Racket

The typed/racket language corresponds to the racket language—that is, any identifier provided by racket, such as modulo, is available by default in typed/racket.

#lang typed/racket
(modulo 12 2)

The typed/racket/base language corresponds to the racket/base language.

Some libraries have counterparts in the typed collection, which provide the same exports as the untyped versions. Such libraries include srfi/14, net/url, and many others.

#lang typed/racket
(require typed/srfi/14)
(char-set= (string->char-set "hello")
           (string->char-set "olleh"))

Other libraries can be used with Typed Racket via require/typed.

#lang typed/racket
(require/typed version/check
               [check-version (-> (U Symbol (Listof Any)))])
(check-version)

The following libraries are included with Typed Racket in the typed collection:

 (require typed/file/gif) package: typed-racket-more

type

GIF-Stream

Describe a GIF stream, as produced by gif-start and accepted by the other functions from file/gif.

type

GIF-Colormap

Type alias for a list of three-element (R,G,B) vectors representing an image.

 (require typed/file/md5) package: typed-racket-lib
 (require typed/file/tar) package: typed-racket-lib
 (require typed/framework) package: typed-racket-more
 (require typed/json) package: typed-racket-more

type

JSExpr

Describes a jsexpr.

 (require typed/mred/mred) package: typed-racket-more
 (require typed/net/base64) package: typed-racket-more
 (require typed/net/cgi) package: typed-racket-more
 (require typed/net/cookie) package: typed-racket-more

type

Cookie

Describes an HTTP cookie as implemented by net/cookie.

 (require typed/net/dns) package: typed-racket-more
 (require typed/net/ftp) package: typed-racket-more

type

FTP-Connection

Describes an open FTP connection.

 (require typed/net/gifwrite) package: typed-racket-more
 (require typed/net/git-checkout)
  package: typed-racket-more
 (require typed/net/head) package: typed-racket-more
 (require typed/net/http-client)
  package: typed-racket-more

type

HTTP-Connection

Describes an HTTP connection, corresponding to http-conn?.

 (require typed/net/imap) package: typed-racket-more

type

IMAP-Connection

Describes an IMAP connection.

 (require typed/net/mime) package: typed-racket-more
 (require typed/net/nntp) package: typed-racket-more
 (require typed/net/pop3) package: typed-racket-more
 (require typed/net/qp) package: typed-racket-more
 (require typed/net/sendmail) package: typed-racket-more
 (require typed/net/sendurl) package: typed-racket-more
 (require typed/net/smtp) package: typed-racket-more
 (require typed/net/uri-codec)
  package: typed-racket-more
 (require typed/net/url-connect)
  package: typed-racket-more
 (require typed/net/url-structs)
  package: typed-racket-more

type

Path/Param

Describes the path/param struct from net/url-structs.

type

URL

Describes an url struct from net/url-structs.

 (require typed/net/url) package: typed-racket-more
In addition to defining the following types, this module also provides the HTTP-Connection type defined by typed/net/http-client, and the URL and Path/Param types from typed/net/url-structs.

type

URL-Exception

Describes exceptions raised by URL-related functions; corresponds to url-exception?.

type

PortT

type

PortT/Bytes

Like PortT, but describes the functions that make POST and PUT requests, which require an additional byte-string argument for POST or PUT data.

 (require typed/openssl) package: typed-racket-more

type

SSL-Protocol

Describes an SSL protocol, defined as (U 'auto 'sslv2-or-v3 'sslv2 'sslv3 'tls 'tls11 'tls12).

type

SSL-Server-Context

type

SSL-Client-Context

Describes an OpenSSL server or client context.

type

SSL-Context

Supertype of OpenSSL server and client contexts.

type

SSL-Listener

Describes an SSL listener, as produced by ssl-listen.

type

SSL-Verify-Source

Describes a verification source usable by ssl-load-verify-source! and the ssl-default-verify-sources parameter.

 (require typed/openssl/md5) package: typed-racket-more
 (require typed/openssl/sha1) package: typed-racket-more
 (require typed/pict) package: typed-racket-more
 (require typed/racket/async-channel)
  package: typed-racket-more

Added in version 1.1 of package typed-racket-lib.

 (require typed/racket/date) package: typed-racket-lib
 (require typed/racket/draw) package: typed-racket-more
 (require typed/racket/gui) package: typed-racket-more
 (require typed/racket/sandbox)
  package: typed-racket-more
 (require typed/racket/snip) package: typed-racket-more
 (require typed/racket/system) package: typed-racket-lib
 (require typed/rackunit/docs-complete)
  package: typed-racket-more
 (require typed/rackunit/gui) package: typed-racket-more
 (require typed/rackunit/text-ui)
  package: typed-racket-more
 (require typed/rackunit) package: typed-racket-more
 (require typed/srfi/14) package: typed-racket-more

type

Char-Set

Describes a character set usable by the srfi/14 functions.

type

Cursor

Describes a cursor for iterating over character sets.

 (require typed/srfi/19) package: typed-racket-more

type

Time

type

Date

Describes an SRFI 19 time or date structure.

 (require typed/syntax/stx) package: typed-racket-more
 (require typed/web-server/configuration/responders)
  package: typed-racket-more
 (require typed/web-server/http)
  package: typed-racket-more

In some cases, these typed adapters may not contain all of exports of the original module, or their types may be more limited.

Other libraries included in the main distribution that are either written in Typed Racket or have adapter modules that are typed:

 (require math) package: math-lib
 (require plot/typed) package: plot-gui-lib

3.1 Porting Untyped Modules to Typed Racket

To adapt a Racket library not included with Typed Racket, the following steps are required:

For example, the following module adapts the untyped racket/bool library:

#lang 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 typed collection.