問題2.69
(define (generate-huffman-tree pairs) (successive-merge (make-leaf-set pairs))) (define (successive-merge leaf-set) (if (> (length leaf-set) 1) (successive-merge (adjoin-set (make-code-tree (car leaf-set) (cadr leaf-set)) (cddr leaf-set))) (car leaf-set))) (let ((tree (generate-huffman-tree '((a 4) (b 2) (c 1) (d 1))))) (decode '(0 1 1 0 0 1 0 1 0 1 1 1 0) tree)) ;; -> '(A D A B B C A) ;; -> ok