From 860a36d499dbef82c4767a1bf610cc97c5cf7576 Mon Sep 17 00:00:00 2001 From: Jon Rafkind Date: Mon, 16 Nov 2009 04:04:58 +0000 Subject: [PATCH] add examples for all c-r shortcuts svn: r16795 --- collects/scribblings/reference/pairs.scrbl | 90 ++++++++++++++-------- 1 file changed, 56 insertions(+), 34 deletions(-) diff --git a/collects/scribblings/reference/pairs.scrbl b/collects/scribblings/reference/pairs.scrbl index 9043a85307..6e9989a49a 100644 --- a/collects/scribblings/reference/pairs.scrbl +++ b/collects/scribblings/reference/pairs.scrbl @@ -1,11 +1,32 @@ #lang scribble/doc @(require "mz.ss" scribble/scheme + scheme/generator + scheme/list (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) (syntax-case stx () - [(_ x ...) + [(_ x ... example) (let ([xs (map syntax-e (syntax->list #'(x ...)))]) (let ([name (string->symbol (string-append @@ -37,9 +58,10 @@ span))) (datum->syntax #'here c (list (syntax-source stx) 1 pos (add1 pos) 1))))] + [example (datum->syntax #'here (syntax->datum #'example))] [equiv equiv]) #'(defproc (name [v contract]) any/c - "Returns " (to-element 'equiv)))))])) + "Returns " (to-element 'equiv) (mz-examples (name example))))))])) @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?)]. @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 every element of @scheme[v-lst]. @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?)]. @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?)]. @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} -@defc_r[a a] -@defc_r[a d] -@defc_r[d a] -@defc_r[d d] -@defc_r[a a a] -@defc_r[a a d] -@defc_r[a d a] -@defc_r[a d d] -@defc_r[d a a] -@defc_r[d a d] -@defc_r[d d a] -@defc_r[d d d] -@defc_r[a a a a] -@defc_r[a a a d] -@defc_r[a a d a] -@defc_r[a a d d] -@defc_r[a d a a] -@defc_r[a d a d] -@defc_r[a d d a] -@defc_r[a d d d] -@defc_r[d a a a] -@defc_r[d a a d] -@defc_r[d a d a] -@defc_r[d a d d] -@defc_r[d d a a] -@defc_r[d d a d] -@defc_r[d d d a] -@defc_r[d d d d] +@defc_r[a a '((1 2) 3 4)] +@defc_r[a d '((1 2) 3 4)] +@defc_r[d a '((7 6 5 4 3 2 1) 8 9)] +@defc_r[d d '(2 1)] +@defc_r[a a a '(((6 5 4 3 2 1) 7) 8 9)] +@defc_r[a a d '(9 (7 6 5 4 3 2 1) 8)] +@defc_r[a d a '((7 6 5 4 3 2 1) 8 9)] +@defc_r[a d d '(3 2 1)] +@defc_r[d a a '(((6 5 4 3 2 1) 7) 8 9)] +@defc_r[d a d '(9 (7 6 5 4 3 2 1) 8)] +@defc_r[d d a '((7 6 5 4 3 2 1) 8 9)] +@defc_r[d d d '(3 2 1)] +@defc_r[a a a a '((((5 4 3 2 1) 6) 7) 8 9)] +@defc_r[a a a d '(9 ((6 5 4 3 2 1) 7) 8)] +@defc_r[a a d a '((7 (5 4 3 2 1) 6) 8 9)] +@defc_r[a a d d '(9 8 (6 5 4 3 2 1) 7)] +@defc_r[a d a a '(((6 5 4 3 2 1) 7) 8 9)] +@defc_r[a d a d '(9 (7 6 5 4 3 2 1) 8)] +@defc_r[a d d a '((7 6 5 4 3 2 1) 8 9)] +@defc_r[a d d d '(4 3 2 1)] +@defc_r[d a a a '((((5 4 3 2 1) 6) 7) 8 9)] +@defc_r[d a a d '(9 ((6 5 4 3 2 1) 7) 8)] +@defc_r[d a d a '((7 (5 4 3 2 1) 6) 8 9)] +@defc_r[d a d d '(9 8 (6 5 4 3 2 1) 7)] +@defc_r[d d a a '(((6 5 4 3 2 1) 7) 8 9)] +@defc_r[d d a d '(9 (7 6 5 4 3 2 1) 8)] +@defc_r[d d d a '((7 6 5 4 3 2 1) 8 9)] +@defc_r[d d d d '(4 3 2 1)] @; ---------------------------------------- @section{Additional List Functions and Synonyms}