fixed macro stepper cursors (no mpairs)
svn: r7713 original commit: d3fe81cb16aacc5484cbd21fac83f8fd86ac578d
This commit is contained in:
parent
5640b966de
commit
b70053ae2a
|
@ -78,25 +78,22 @@
|
||||||
|
|
||||||
(define (cursor:prev c)
|
(define (cursor:prev c)
|
||||||
(let ([prefix (cursor-prefix c)])
|
(let ([prefix (cursor-prefix c)])
|
||||||
(if (mpair? prefix)
|
(if (pair? prefix)
|
||||||
(mcar prefix)
|
(car prefix)
|
||||||
#f)))
|
#f)))
|
||||||
|
|
||||||
(define (cursor:move-prev c)
|
(define (cursor:move-prev c)
|
||||||
(when (mpair? (cursor-prefix c))
|
(when (pair? (cursor-prefix c))
|
||||||
(let ([old-prefix-cell (cursor-prefix c)])
|
(let ([old-prefix (cursor-prefix c)])
|
||||||
(set-cursor-prefix! c (mcdr old-prefix-cell))
|
(set-cursor-prefix! c (cdr old-prefix))
|
||||||
(set-mcdr! old-prefix-cell (cursor-suffixp c))
|
(set-cursor-suffixp! c (cons (car old-prefix) (cursor-suffixp c))))))
|
||||||
(set-cursor-suffixp! c old-prefix-cell))))
|
|
||||||
|
|
||||||
(define (cursor:move-next c)
|
(define (cursor:move-next c)
|
||||||
(when (cursor:has-next? c)
|
(when (cursor:has-next? c)
|
||||||
(let* ([old-suffixp (cursor-suffixp c)]
|
(let* ([old-suffixp (cursor-suffixp c)])
|
||||||
[old-suffix-pair
|
(set-cursor-prefix! c (cons (stream-car old-suffixp)
|
||||||
(if (mpair? old-suffixp) old-suffixp (force old-suffixp))])
|
(cursor-prefix c)))
|
||||||
(set-cursor-suffixp! c (mcdr old-suffix-pair))
|
(set-cursor-suffixp! c (stream-cdr old-suffixp)))))
|
||||||
(set-mcdr! old-suffix-pair (cursor-prefix c))
|
|
||||||
(set-cursor-prefix! c old-suffix-pair))))
|
|
||||||
|
|
||||||
(define (cursor:at-start? c)
|
(define (cursor:at-start? c)
|
||||||
(null? (cursor-prefix c)))
|
(null? (cursor-prefix c)))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user