(define sample-tree2
'((leaf NA 16) ((leaf YIP 9) (((leaf A 2) ((leaf WAH 1) (leaf BOOM 1) (WAH BOOM) 2) (A WAH BOOM) 4) ((leaf SHA 3) ((leaf JOB 2) (leaf GET 2) (JOB GET) 4) (SHA JOB GET) 7) (A WAH BOOM SHA JOB GET) 11) (YIP A WAH BOOM SHA JOB GET) 20) (NA YIP A WAH BOOM SHA JOB GET) 36))
(define (bit-cost sym tree)
(length (encode (list sym) tree)))
(use srfi-1)
(define (check size pos)
(let ((tree (generate-huffman-tree (zip (iota size 1) (f size)))))
(bit-cost pos tree)))
(define (f n)
(define (iter result c state)
(if (= c n)
(reverse result)
(iter (cons state result) (+ c 1) (* state 2))))
(iter '() 0 1))
(let ((lst (iota 10 1)))
(zip lst (map (cut check <> 1) lst)))
(let ((lst (iota 10 1)))
(zip lst (map (lambda (x) (check x x)) lst)))
(bit-cost 'A (generate-huffman-tree '((A 1))))