Small error and sl-store-head added.
This commit is contained in:
@@ -267,4 +267,5 @@
|
||||
(err-test "Dit is nog een foutbericht")
|
||||
(fatal-test "JA!")
|
||||
(dbg-test "Oke, nog een debug bericht")
|
||||
(sl-log-to-store 10)
|
||||
)
|
||||
|
||||
+20
-2
@@ -11,6 +11,7 @@
|
||||
sl-store-grep-level
|
||||
sl-store-grep
|
||||
sl-store-tail
|
||||
sl-store-head
|
||||
sl-store-enqueue!
|
||||
sl-store->list
|
||||
sl-store->display
|
||||
@@ -105,7 +106,7 @@
|
||||
(if (> (queue-length queue) ml)
|
||||
(begin
|
||||
(dequeue! queue)
|
||||
(set-sl-store-length! store (- sl-store-length store 1))
|
||||
(set-sl-store-length! store (- (sl-store-length store) 1))
|
||||
(loop))
|
||||
#t))
|
||||
)
|
||||
@@ -195,8 +196,12 @@
|
||||
(queue-length nq)
|
||||
nq))))
|
||||
|
||||
|
||||
(define (int>0? a)
|
||||
(and (integer? a) (> a 0)))
|
||||
|
||||
(define/contract (sl-store-tail store n)
|
||||
(-> sl-store? number? sl-store?)
|
||||
(-> sl-store? int>0? sl-store?)
|
||||
(let* ((q (sl-store-queue store))
|
||||
(from (if (>= n (queue-length q))
|
||||
0
|
||||
@@ -211,4 +216,17 @@
|
||||
#f))))))
|
||||
(make-sl-store* (sl-store-max-length store) (queue-length nq) nq))))
|
||||
|
||||
(define/contract (sl-store-head store n)
|
||||
(-> sl-store? int>0? sl-store?)
|
||||
(let* ((q (sl-store-queue store))
|
||||
(until (if (>= n (queue-length q))
|
||||
(queue-length q)
|
||||
n))
|
||||
(i 0))
|
||||
(let ((nq (copy-queue q
|
||||
(λ (item)
|
||||
(set! i (+ i 1))
|
||||
(<= i n)))))
|
||||
(make-sl-store* (sl-store-max-length store) (queue-length nq) nq))))
|
||||
|
||||
|
||||
|
||||
@@ -288,6 +288,15 @@ Returns a store containing the last @racket[count] entries. If
|
||||
@racket[count] is greater than the store length, all entries are returned.
|
||||
}
|
||||
|
||||
|
||||
@defproc[(sl-store-head [store any/c]
|
||||
[count exact-nonnegative-integer?])
|
||||
any/c]{
|
||||
|
||||
Returns a store containing the first @racket[count] entries. If
|
||||
@racket[count] is greater than the store length, all entries are returned.
|
||||
}
|
||||
|
||||
@section{Store examples}
|
||||
|
||||
@racketblock[
|
||||
|
||||
Reference in New Issue
Block a user