queue: Add queue-length procedure.
authorDavid Thompson <dthompson2@worcester.edu>
Thu, 29 Nov 2018 19:27:00 +0000 (14:27 -0500)
committerDavid Thompson <dthompson2@worcester.edu>
Thu, 29 Nov 2018 19:28:59 +0000 (14:28 -0500)
* chickadee/queue.scm (queue-length): New procedure.

chickadee/queue.scm

index 158ac74..51cec76 100644 (file)
@@ -1,5 +1,5 @@
 ;;; Chickadee Game Toolkit
-;;; Copyright © 2017 David Thompson <davet@gnu.org>
+;;; Copyright © 2017, 2018 David Thompson <davet@gnu.org>
 ;;;
 ;;; Chickadee is free software: you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published
@@ -22,6 +22,7 @@
   #:use-module (chickadee array-list)
   #:export (make-queue
             queue?
+            queue-length
             queue-empty?
             enqueue!
             dequeue!))
@@ -33,9 +34,7 @@
   (output queue-output))
 
 (define (display-queue q port)
-  (format port "#<queue length: ~d>"
-          (+ (array-list-size (queue-input q))
-             (array-list-size (queue-output q)))))
+  (format port "#<queue length: ~d>" (queue-length q)))
 
 (set-record-type-printer! <queue> display-queue)
 
   "Return a new, empty queue."
   (%make-queue (make-array-list) (make-array-list)))
 
+(define (queue-length q)
+  "Return the number of elements in Q."
+  (+ (array-list-size (queue-input q))
+     (array-list-size (queue-output q))))
+
 (define (queue-empty? q)
   "Return #t if Q is empty."
-  (and (array-list-empty? (queue-input q))
-       (array-list-empty? (queue-output q))))
+  (zero? (queue-length q)))
 
 (define (enqueue! q item)
   "Add ITEM to Q."