Re: [racket-dev] [plt] Push #21533: master branch updated

2010-11-16 Thread Robby Findler
I added (but have not pushed, apprently) queue-map. Mind if we keep
that one instead?

Also, I think that a rename like the below is a bad idea if the queues
have been released already.

Robby

On Tue, Nov 16, 2010 at 3:37 PM,  rafk...@racket-lang.org wrote:
 rafkind has updated `master' from b8bbed6eb4 to 7b24eaf58e.
  http://git.racket-lang.org/plt/b8bbed6eb4..7b24eaf58e

 =[ 2 Commits ]==

 Directory summary:
  22.4% collects/data/scribblings/
  35.6% collects/data/
  41.8% collects/tests/data/

 ~~

 73be679 Jon Rafkind rafk...@racket-lang.org 2010-11-16 12:02
 :
 | add queue-list
 :
  M collects/data/queue.rkt               |   20 +++-
  M collects/data/scribblings/queue.scrbl |   12 
  M collects/tests/data/queue.rkt         |   12 +++-

 ~~

 7b24eaf Jon Rafkind rafk...@racket-lang.org 2010-11-16 14:36
 :
 | rename queue-count to queue-length
 :
  M collects/data/queue.rkt               |    6 +++---
  M collects/data/scribblings/queue.scrbl |    8 
  M collects/tests/data/queue.rkt         |   14 +++---

 =[ Overall Diff ]===

 collects/data/queue.rkt
 ~~~
 --- OLD/collects/data/queue.rkt
 +++ NEW/collects/data/queue.rkt
 @@ -31,7 +31,24 @@
     (set-queue-head! q (link-tail old))
     (link-value old)))

 -(define (queue-count queue)
 +(define (queue-list queue)
 +  (let loop ([link (queue-head queue)]
 +             [out '()])
 +    (if (not link)
 +      (reverse out)
 +      (loop (link-tail link) (cons (link-value link) out)
 +
 +;; queue-vector could be implemented as (list-vector (queue-list q))
 +;; but this is somewhat slow. a direct translation between queue's and
 +;; vector's should be fast so the ideal situation is not to use a list
 +;; as an intermediate data structure.
 +;; maybe add the elements to a gvector and use gvector-vector?
 +
 +;; could use (length (queue-list q)) here but that would double
 +;; the time it takes to get the length
 +;; probably if `queue-vector' gets implemented it would be better to
 +;; do (vector-length (queue-vector q))
 +(define (queue-length queue)
   (let loop ([link (queue-head queue)]
              [count 0])
     (if (not link)
 @@ -56,6 +73,7 @@
  [queue? (- any/c boolean?)]
  [make-queue (- queue/c)]
  [queue-empty? (- queue/c boolean?)]
 - [queue-count (- queue/c integer?)])
 + [queue-length (- queue/c integer?)]
 + [queue-list (- queue/c (listof any/c))])

  (provide enqueue! dequeue!)

 collects/data/scribblings/queue.scrbl
 ~
 --- OLD/collects/data/scribblings/queue.scrbl
 +++ NEW/collects/data/scribblings/queue.scrbl
 @@ -34,17 +34,29 @@ thread-unsafe way.
     (dequeue! q)]
  }

 -...@defproc[(queue-count [queue queue/c]) integer?]{
 +...@defproc[(queue-list [queue queue/c]) (listof any/c)]{
 +  Returns an immutable list containing the elements of the queue
 +  in the order the elements were added.
 +
 + �...@defexamples[#:eval qeval
 +    (define queue (make-queue))
 +    (enqueue! queue 8)
 +    (enqueue! queue 9)
 +    (enqueue! queue 0)
 +    (queue-list queue)]
 +}
 +
 +...@defproc[(queue-length [queue queue/c]) integer?]{
   Returns the number of elements in the queue.

   @defexamples[#:eval qeval
     (define queue (make-queue))
 -    (queue-count queue)
 +    (queue-length queue)
     (enqueue! queue 5)
     (enqueue! queue 12)
 -    (queue-count queue)
 +    (queue-length queue)
     (dequeue! queue)
 -    (queue-count queue)]
 +    (queue-length queue)]
  }

 �...@defproc[(queue-empty? [q queue/c]) boolean?]{

 collects/tests/data/queue.rkt
 ~
 --- OLD/collects/tests/data/queue.rkt
 +++ NEW/collects/tests/data/queue.rkt
 @@ -34,21 +34,21 @@
          (dequeue! q)
          (dequeue! q)
          (check-true (queue-empty? q)
 -   (test-suite count
 -     (test-case count empty
 +   (test-suite length
 +     (test-case length empty
        (let* ([queue (make-queue)])
 -         (check-equal? (queue-count queue) 0)))
 -     (test-case count enqueue once
 +         (check-equal? (queue-length queue) 0)))
 +     (test-case length enqueue once
        (let* ([queue (make-queue)])
          (enqueue! queue 5)
 -         (check-equal? (queue-count queue) 1)))
 -     (test-case count enqueue thrice dequeue once
 +         (check-equal? (queue-length queue) 1)))
 +     (test-case length enqueue thrice dequeue once
        (let* ([queue (make-queue)])
          (enqueue! queue 5)
          (enqueue! queue 9)
          (enqueue! queue 12)
          (dequeue! queue)
 -         (check-equal? (queue-count queue) 2
 +         (check-equal? (queue-length queue) 2
    (test-suite dequeue!
      (test-case make-queue
        (check-exn exn:fail? (lambda () (dequeue! (make-queue)
 @@ -63,4 +63,14 @@
          (enqueue! q 2)
          (check-equal? (dequeue! q) 1)
        

Re: [racket-dev] [plt] Push #21533: master branch updated

2010-11-16 Thread Jon Rafkind
On 11/16/2010 02:39 PM, Robby Findler wrote:
 I added (but have not pushed, apprently) queue-map. Mind if we keep
 that one instead?


Instead of what.. queue-list? I guess you can implement queue-list in
terms of queue-map as (queue-map values queue), but I'd rather not write
that in user code.

 Also, I think that a rename like the below is a bad idea if the queues
 have been released already.


I added queue-count yesterday or so, so its fairly fresh. (The rename
was not my idea)
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev