Remove vestigial set of parens and fix docs for new syntax.

This commit is contained in:
Vincent St-Amour 2012-05-23 12:43:45 -04:00
parent 94bd484a66
commit 3210cd1d12
4 changed files with 17 additions and 28 deletions

View File

@ -14,10 +14,10 @@
(define-syntax (define-generics stx) ; allows out-of-order / optional kw args
(syntax-case stx () ; can't use syntax-parse, since it depends on us
[(_ (name) (generic . generics-args) ...)
#'(define-generics (name #:defined-table defined-table)
[(_ name (generic . generics-args) ...)
#'(define-generics name #:defined-table defined-table
(generic . generics-args) ...)]
[(_ (name #:defined-table defined-table)
[(_ name #:defined-table defined-table
(generic . generics-args) ...)
(local [(define name-str (symbol->string (syntax-e #'name)))
(define (id . strs)

View File

@ -15,8 +15,7 @@ using a @racket[define-generics] form. Method implementations for
a structure type are defined using the @racket[#:methods] keyword
(see @secref["define-struct"]).
@defform/subs[(define-generics (gen:name prop:name name?
[#:defined-table defined-table])
@defform/subs[(define-generics name [#:defined-table defined-table]
[method . kw-formals*]
...)
([kw-formals* (arg* ...)
@ -27,22 +26,12 @@ a structure type are defined using the @racket[#:methods] keyword
(code:line keyword id)
(code:line keyword [id])])
#:contracts
([gen:name identifier?]
[prop:name identifier?]
[name? identifier?]
([name identifier?]
[defined-table identifier?]
[method identifier?])]{
Defines @racket[gen:name] as a transformer binding for the static
information about a new generic group.
Defines @racket[prop:name] as a structure type property. Structure
types implementing this generic group should have this property where
the value is a vector with one element per @racket[method] where each
value is either @racket[#f] or a procedure with the same arity as
specified by @racket[kw-formals*]. (@racket[kw-formals*] is similar to
the @racket[kw-formals] used by @racket[lambda], except no expression is
given for optional arguments.) The arity of each method is checked by
the guard on the structure type property.
information about a new generic interface.
Defines @racket[name?] as a predicate identifying instances of structure
types that implement this generic group.
@ -50,7 +39,7 @@ types that implement this generic group.
Defines each @racket[method] as a generic procedure that calls the
corresponding method on values where @racket[name?] is true. Each method
must have a required by-position argument that is
@racket[free-identifier=?] to @racket[gen:name]. This argument is used in
@racket[free-identifier=?] to @racket[name]. This argument is used in
the generic definition to locate the specialization.
The optional @racket[defined-table] argument should be an identifier.
@ -89,7 +78,7 @@ with @racket[#:methods].
@(define evaluator (new-evaluator))
@examples[#:eval evaluator
(define-generics (printable)
(define-generics printable
(gen-print printable [port])
(gen-port-print port printable)
(gen-print* printable [port] #:width width #:height [height]))

View File

@ -2,7 +2,7 @@
(require racket/generics racket/port)
(define-generics (printable)
(define-generics printable
(gen-print printable [port])
(gen-port-print port printable)
(gen-print* printable [port] #:width width #:height [height]))

View File

@ -13,7 +13,7 @@
(test #:on-pass 'quiet
(local
[(define-generics (lots)
[(define-generics lots
(f #:foo foo lots zog [def]))
(define-struct ex ()
@ -26,7 +26,7 @@
(f (make-ex) 2 #:foo 3) => 1))
(local
[(define-generics (lots)
[(define-generics lots
(f #:foo foo lots zog #:def [def]))
(define-struct ex ()
@ -39,7 +39,7 @@
(f (make-ex) 3 #:foo 1) => 1))
(local
[(define-generics (lots)
[(define-generics lots
(f lots idx val))
(define-struct ex ()
@ -53,7 +53,7 @@
(f (make-ex) 4 1) => (expt 2 4)))
(local
[(define-generics (table)
[(define-generics table
(get table idx [default])
(weird-get idx table)
(put! table idx new))
@ -92,18 +92,18 @@
1))
(test #:on-pass 'quiet
(define-generics (table)
(define-generics table
(get idx [default]))
=error>
"No required by-position generic argument"
(define-generics (table)
(define-generics table
(get idx [table] [default]))
=error>
"No required by-position generic argument")
(local [(define-generics (printable)
(local [(define-generics printable
(gen-print printable [port])
(gen-port-print port printable)
(gen-print* printable [port] #:width width #:height [height]))