Small error and sl-store-head added.
This commit is contained in:
@@ -267,4 +267,5 @@
|
|||||||
(err-test "Dit is nog een foutbericht")
|
(err-test "Dit is nog een foutbericht")
|
||||||
(fatal-test "JA!")
|
(fatal-test "JA!")
|
||||||
(dbg-test "Oke, nog een debug bericht")
|
(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-level
|
||||||
sl-store-grep
|
sl-store-grep
|
||||||
sl-store-tail
|
sl-store-tail
|
||||||
|
sl-store-head
|
||||||
sl-store-enqueue!
|
sl-store-enqueue!
|
||||||
sl-store->list
|
sl-store->list
|
||||||
sl-store->display
|
sl-store->display
|
||||||
@@ -105,7 +106,7 @@
|
|||||||
(if (> (queue-length queue) ml)
|
(if (> (queue-length queue) ml)
|
||||||
(begin
|
(begin
|
||||||
(dequeue! queue)
|
(dequeue! queue)
|
||||||
(set-sl-store-length! store (- sl-store-length store 1))
|
(set-sl-store-length! store (- (sl-store-length store) 1))
|
||||||
(loop))
|
(loop))
|
||||||
#t))
|
#t))
|
||||||
)
|
)
|
||||||
@@ -195,8 +196,12 @@
|
|||||||
(queue-length nq)
|
(queue-length nq)
|
||||||
nq))))
|
nq))))
|
||||||
|
|
||||||
|
|
||||||
|
(define (int>0? a)
|
||||||
|
(and (integer? a) (> a 0)))
|
||||||
|
|
||||||
(define/contract (sl-store-tail store n)
|
(define/contract (sl-store-tail store n)
|
||||||
(-> sl-store? number? sl-store?)
|
(-> sl-store? int>0? sl-store?)
|
||||||
(let* ((q (sl-store-queue store))
|
(let* ((q (sl-store-queue store))
|
||||||
(from (if (>= n (queue-length q))
|
(from (if (>= n (queue-length q))
|
||||||
0
|
0
|
||||||
@@ -210,5 +215,18 @@
|
|||||||
(set! i (+ i 1))
|
(set! i (+ i 1))
|
||||||
#f))))))
|
#f))))))
|
||||||
(make-sl-store* (sl-store-max-length store) (queue-length nq) nq))))
|
(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.
|
@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}
|
@section{Store examples}
|
||||||
|
|
||||||
@racketblock[
|
@racketblock[
|
||||||
|
|||||||
Reference in New Issue
Block a user