Advertisement
Guest User

Untitled

a guest
Aug 9th, 2017
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (define (make-state)
  2.   (define next-0 #f)
  3.   (define next-1 #f)
  4.   (define weight 0)
  5.   (define id #f)
  6.  
  7.   (define (set-pointers! p1 p2)
  8.     (set! next-0 p1)
  9.     (set! next-1 p2))
  10.  
  11.   (define (select-next)
  12.     (lambda(t)
  13.     (cond((eq? t' 0) next-0)
  14.          ((eq? t' 1) next-1))))
  15.  
  16.   (define (heaviest-next)
  17.     (if(= (next-0 'weight) (next-1 'weight))
  18.        0
  19.        (if(> (next-0 'weight)(next-1 'weight)) 0 1)))
  20.  
  21.   (define (set-id! new-id)
  22.     (set! id new-id))
  23.  
  24.   (lambda (m)
  25.     (cond((eq? m 'set-pointers!) set-pointers!)
  26.          ((eq? m 'select-next) (select-next))
  27.          ((eq? m 'heaviest-next) (heaviest-next))
  28.          ((eq? m 'increase-weight!) (set! weight (+ weight 1)))
  29.          ((eq? m 'weight) weight)
  30.          ;((eq? m 'next-0) next-0)
  31.          ;((eq? m 'next-1) next-1)
  32.          ((eq? m 'get-id) id)
  33.          ((eq? m 'set-id!) set-id!)
  34.          (else "Unknown request"))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement