racket/collects/web-server/scribblings/native.scrbl
Eli Barzilay d61eb53686 Lots of documentation formatting.
Started as fixing misindented definitions, then more indentations, then
a bunch of similar things (square brackets, huge spaces at end-of-lines,
etc).
2011-08-15 07:50:04 -04:00

42 lines
1.1 KiB
Racket

#lang scribble/doc
@(require "web-server.rkt")
@title[]{Native Interfaces}
@(require (for-label racket
web-server/lang/native
web-server/lang/abort-resume))
@defmodule[web-server/lang/native]{
It is sometimes inconvenient to use @racket[serial->native] and
@racket[native->serial] throughout your program. This module provides a
macro for creating wrappers.
@defform[#:literals (ho)
(define-native (native arg-spec ...) original)
#:contracts ([arg-spec ho] [arg-spec _])]{
Builds an interface around @racket[original] named @racket[native] such
that calls to @racket[native] are wrapped in @racket[serial->native]
and all arguments marked with @racket[ho] in @racket[arg-spec] are
assumed to procedures and are wrapped in @racket[native->serial].
For example,
@racketblock[
(define-native (build-list/native _ ho) build-list)
]
is equivalent to
@racketblock[
(define (build-list/native fst snd)
(serial->native
(build-list
fst
(lambda args
(native->serial
(apply snd args))))))
]
}
}