add examples for all c-r shortcuts

svn: r16795
This commit is contained in:
Jon Rafkind 2009-11-16 04:04:58 +00:00
parent c991ada1e7
commit 860a36d499

View File

@ -1,11 +1,32 @@
#lang scribble/doc #lang scribble/doc
@(require "mz.ss" @(require "mz.ss"
scribble/scheme scribble/scheme
scheme/generator
scheme/list
(for-syntax scheme/base)) (for-syntax scheme/base))
@(define (generate-c_r-example proc)
(define (make-it start n)
(generator
(let loop ([start start]
[n n])
(yield (list* n start))
(yield (append start (list n)))
(when (< (length (flatten start)) 8)
(loop (list* n start) (add1 n))
(loop (list start n) (add1 n))
))))
(define (example proc)
(define maker (make-it '() 1))
(let loop ([value (maker)])
(with-handlers ([exn? (lambda (e) (loop (maker)))])
(proc value)
value)))
(example proc))
@(define-syntax (defc_r stx) @(define-syntax (defc_r stx)
(syntax-case stx () (syntax-case stx ()
[(_ x ...) [(_ x ... example)
(let ([xs (map syntax-e (syntax->list #'(x ...)))]) (let ([xs (map syntax-e (syntax->list #'(x ...)))])
(let ([name (string->symbol (let ([name (string->symbol
(string-append (string-append
@ -37,9 +58,10 @@
span))) span)))
(datum->syntax #'here c (datum->syntax #'here c
(list (syntax-source stx) 1 pos (add1 pos) 1))))] (list (syntax-source stx) 1 pos (add1 pos) 1))))]
[example (datum->syntax #'here (syntax->datum #'example))]
[equiv equiv]) [equiv equiv])
#'(defproc (name [v contract]) any/c #'(defproc (name [v contract]) any/c
"Returns " (to-element 'equiv)))))])) "Returns " (to-element 'equiv) (mz-examples (name example))))))]))
@title[#:tag "pairs"]{Pairs and Lists} @title[#:tag "pairs"]{Pairs and Lists}
@ -393,7 +415,7 @@ Returns a list that is like @scheme[lst], omitting the first element
Returns @scheme[(remove v lst eq?)]. Returns @scheme[(remove v lst eq?)].
@mz-examples[ @mz-examples[
(remq 2 (list 1 2 3 4 5)) (remq (list 1 2) (list 1 2 3 4 5))
]} ]}
@ -412,7 +434,7 @@ Returns @scheme[(remove v lst eqv?)].
Like @scheme[remove], but removes from @scheme[lst] every instance of Like @scheme[remove], but removes from @scheme[lst] every instance of
every element of @scheme[v-lst]. every element of @scheme[v-lst].
@mz-examples[ @mz-examples[
(remove* 2 (list 1 2 3 2 4 5 2)) (remove* (list 1 2) (list 1 2 3 2 4 5 2))
]} ]}
@ -422,7 +444,7 @@ every element of @scheme[v-lst].
Returns @scheme[(remove* v-lst lst eq?)]. Returns @scheme[(remove* v-lst lst eq?)].
@mz-examples[ @mz-examples[
(remq* 2 (list 1 2 3 2 4 5 2)) (remq* (list 1 2) (list 1 2 3 2 4 5 2))
]} ]}
@ -431,7 +453,7 @@ Returns @scheme[(remove* v-lst lst eq?)].
Returns @scheme[(remove* v-lst lst eqv?)]. Returns @scheme[(remove* v-lst lst eqv?)].
@mz-examples[ @mz-examples[
(remv* 2 (list 1 2 3 2 4 5 2)) (remv* (list 1 2) (list 1 2 3 2 4 5 2))
]} ]}
@ -594,34 +616,34 @@ Like @scheme[assoc], but finds an element using the predicate
@; ---------------------------------------- @; ----------------------------------------
@section{Pair Accessor Shorthands} @section{Pair Accessor Shorthands}
@defc_r[a a] @defc_r[a a '((1 2) 3 4)]
@defc_r[a d] @defc_r[a d '((1 2) 3 4)]
@defc_r[d a] @defc_r[d a '((7 6 5 4 3 2 1) 8 9)]
@defc_r[d d] @defc_r[d d '(2 1)]
@defc_r[a a a] @defc_r[a a a '(((6 5 4 3 2 1) 7) 8 9)]
@defc_r[a a d] @defc_r[a a d '(9 (7 6 5 4 3 2 1) 8)]
@defc_r[a d a] @defc_r[a d a '((7 6 5 4 3 2 1) 8 9)]
@defc_r[a d d] @defc_r[a d d '(3 2 1)]
@defc_r[d a a] @defc_r[d a a '(((6 5 4 3 2 1) 7) 8 9)]
@defc_r[d a d] @defc_r[d a d '(9 (7 6 5 4 3 2 1) 8)]
@defc_r[d d a] @defc_r[d d a '((7 6 5 4 3 2 1) 8 9)]
@defc_r[d d d] @defc_r[d d d '(3 2 1)]
@defc_r[a a a a] @defc_r[a a a a '((((5 4 3 2 1) 6) 7) 8 9)]
@defc_r[a a a d] @defc_r[a a a d '(9 ((6 5 4 3 2 1) 7) 8)]
@defc_r[a a d a] @defc_r[a a d a '((7 (5 4 3 2 1) 6) 8 9)]
@defc_r[a a d d] @defc_r[a a d d '(9 8 (6 5 4 3 2 1) 7)]
@defc_r[a d a a] @defc_r[a d a a '(((6 5 4 3 2 1) 7) 8 9)]
@defc_r[a d a d] @defc_r[a d a d '(9 (7 6 5 4 3 2 1) 8)]
@defc_r[a d d a] @defc_r[a d d a '((7 6 5 4 3 2 1) 8 9)]
@defc_r[a d d d] @defc_r[a d d d '(4 3 2 1)]
@defc_r[d a a a] @defc_r[d a a a '((((5 4 3 2 1) 6) 7) 8 9)]
@defc_r[d a a d] @defc_r[d a a d '(9 ((6 5 4 3 2 1) 7) 8)]
@defc_r[d a d a] @defc_r[d a d a '((7 (5 4 3 2 1) 6) 8 9)]
@defc_r[d a d d] @defc_r[d a d d '(9 8 (6 5 4 3 2 1) 7)]
@defc_r[d d a a] @defc_r[d d a a '(((6 5 4 3 2 1) 7) 8 9)]
@defc_r[d d a d] @defc_r[d d a d '(9 (7 6 5 4 3 2 1) 8)]
@defc_r[d d d a] @defc_r[d d d a '((7 6 5 4 3 2 1) 8 9)]
@defc_r[d d d d] @defc_r[d d d d '(4 3 2 1)]
@; ---------------------------------------- @; ----------------------------------------
@section{Additional List Functions and Synonyms} @section{Additional List Functions and Synonyms}