Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define (make-state)
- (define next-0 #f)
- (define next-1 #f)
- (define weight 0)
- (define id #f)
- (define (set-pointers! p1 p2)
- (set! next-0 p1)
- (set! next-1 p2))
- (define (select-next)
- (lambda(t)
- (cond((eq? t' 0) next-0)
- ((eq? t' 1) next-1))))
- (define (heaviest-next)
- (if(= (next-0 'weight) (next-1 'weight))
- 0
- (if(> (next-0 'weight)(next-1 'weight)) 0 1)))
- (define (set-id! new-id)
- (set! id new-id))
- (lambda (m)
- (cond((eq? m 'set-pointers!) set-pointers!)
- ((eq? m 'select-next) (select-next))
- ((eq? m 'heaviest-next) (heaviest-next))
- ((eq? m 'increase-weight!) (set! weight (+ weight 1)))
- ((eq? m 'weight) weight)
- ;((eq? m 'next-0) next-0)
- ;((eq? m 'next-1) next-1)
- ((eq? m 'get-id) id)
- ((eq? m 'set-id!) set-id!)
- (else "Unknown request"))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement